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

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -