swift – 如何在NSDecimalNumber中存储1.66

我知道浮点数或双倍数不适合存储十进制数字,如金钱和数量.我正在尝试使用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

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...