ios - 如何从 NSNumberFormatter 获取准确的值?

标签 ios swift nsnumberformatter

从下面的代码中,我希望 convertedN99999999,但我得到的是 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/

相关文章:

ios - 照片滤镜使 iPod 上的应用程序崩溃

ios - 以编程方式设置 UIViewController 的 View 和生命周期

ios - 关于 Interface Builder 组件发布

ios - 如何在 xcode 代码中显示图像标题而不是图标?

swift - 无法解决 swift 4 中的 Null 问题?

ios - setMaximumFractionDigits 的问题

swift - 在 Swift 中使用 NSNumberFormatter 格式化货币输入

iphone - 格式化 iPhone 文本字段中输入的数字

ios - Realm <List> 已填充但只有一个对象

swift/iOS 9 : using Popover Presentation with a UITableViewCell