Joe*_*oey 8 nsdecimalnumber swift
我知道浮点数或双倍数不适合存储十进制数字,如金钱和数量.我正在尝试使用NSDecimalNumber.这是我在Swift游乐场的代码.
let number:NSDecimalNumber = 1.66
let text:String = String(describing: number)
NSLog(text)
Run Code Online (Sandbox Code Playgroud)
控制台输出为1.6599999999999995904
如何在变量中存储十进制数1.66的确切值?
Mar*_*n R 11
在
let number:NSDecimalNumber = 1.66
Run Code Online (Sandbox Code Playgroud)
右侧是浮点数,不能完全代表值"1.66".一种选择是从字符串创建十进制数:
let number = NSDecimalNumber(string: "1.66")
print(number) // 1.66
Run Code Online (Sandbox Code Playgroud)
另一个选择是使用算术:
let number = NSDecimalNumber(value: 166).dividing(by: 100)
print(number) // 1.66
Run Code Online (Sandbox Code Playgroud)
使用Swift 3,您可以考虑使用"叠加值类型" Decimal,例如
let num = Decimal(166)/Decimal(100)
print(num) // 1.66
Run Code Online (Sandbox Code Playgroud)
还有一个选择:
let num = Decimal(sign: .plus, exponent: -2, significand: 166)
print(num) // 1.66
Run Code Online (Sandbox Code Playgroud)
附录:
Swift论坛中的相关讨论:
相关错误报告:
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |