swift - Index out of range for function to convert large number to number with suffix (million, billion....) -
i new programmer building first incremental game ios. wrote small function convert large number smaller number suffix.
func numberconverter(_ number: double) -> string { let intermediate = floor(log10(number)/3) let numbersuffix: [string] = ["k", "m", "b", "t", "qa", "qi", "sx", "sp", "oc", "no", "dc", "udc", "ddc", "tdc", "qadc"] let convertednumber: string = "\(round(number / pow(10.0, intermediate * 3.0) * 1000) / 1000) \(numbersuffix[int(intermediate) - 1])" return convertednumber } when conversion, "index out of range" error.
i tried many different searches this, until no answer.
can have look? lot help.
you have solve edge cases:
func numberconverter(_ number: double) -> string { let numintegerdigits: int // smaller numbers log10 won't make sense // adding abs(...) fixes handling of negative values if abs(number) < 1 { numintegerdigits = 0 } else { numintegerdigits = int(floor(log10(abs(number)))) } let unitindex = numintegerdigits / 3 let numbersuffixes: [string] = ["k", "m", "b", "t", "qa", "qi", "sx", "sp", "oc", "no", "dc", "udc", "ddc", "tdc", "qadc"] // have solve case when there no unit (all values < 1000) guard unitindex > 0 else { return string(number) } let scalednumber = round(number / pow(10.0, double(numintegerdigits)) * 1000) / 1000 let unitsuffix = numbersuffixes[unitindex - 1] return "\(scalednumber) \(unitsuffix)" }
Comments
Post a Comment