从下面的代码中,我希望 convertedN
为 99999999
,但我得到的是 99999998
。问题是在设置n
之前存在舍入错误。我该怎么做才能得到我想要的结果?
let amount = ".99999999"
let tmpFormatter = NSNumberFormatter()
tmpFormatter.maximumFractionDigits = 8
let n = tmpFormatter.numberFromString(amount)
let decimalAmount = NSDecimalNumber(decimal: n!.decimalValue)
let convertedN = (decimalAmount.decimalNumberByMultiplyingBy(NSDecimalNumber(unsignedLongLong: 100000000))).unsignedLongLongValue
最佳答案
使用 doubleValue 代替。 NSDecimalNumber
对数字进行四舍五入。
let amount = ".99999999"
let tmpFormatter = NSNumberFormatter()
tmpFormatter.maximumFractionDigits = 8
let n = tmpFormatter.numberFromString(amount)
let doubleValue = n!.doubleValue
let convertedN = doubleValue * 100000000
关于ios - 如何从 NSNumberFormatter 获取准确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084407/