我知道浮点数或双倍数不适合存储十进制数字,如金钱和数量.我正在尝试使用NSDecimalNumber.这是我在
Swift游乐场的代码.
let number:NSDecimalNumber = 1.66 let text:String = String(describing: number) NSLog(text)
控制台输出为1.6599999999999995904
如何在变量中存储十进制数1.66的确切值?
在
let number:NSDecimalNumber = 1.66
右侧是浮点数,不能代表
值“1.66”完全正确.一种选择是创建十进制数
从一个字符串:
let number = NSDecimalNumber(string: "1.66") print(number) // 1.66
另一个选择是使用算术:
let number = NSDecimalNumber(value: 166).dividing(by: 100) print(number) // 1.66
使用Swift 3,您可以考虑使用“叠加值类型”Decimal,例如
let num = Decimal(166)/Decimal(100) print(num) // 1.66
还有一个选择:
let num = Decimal(sign: .plus,exponent: -2,significand: 166) print(num) // 1.66
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。