【发布时间】:2018-02-05 23:09:19
【问题描述】:
我读过很多,NSDecimalNumber 是使用货币时使用的最佳格式。
但是,我仍然遇到浮点问题。
例如。
let a: NSDecimalNumber = 0.07 //0.07000000000000003
let b: NSDecimalNumber = 7.dividing(by: 100) //0.06999999999999999
我知道我可以使用 Decimal 并且 b 就是我所期望的:
let b: Decimal = 7 / 100 //0.07
我在我的应用程序中使用 Core Data。所以我坚持使用NSDecimalNumber。除非我想将很多 NSDecimalNumbers 转换为 Decimals。
有人可以帮我弄到 0.07 吗?
【问题讨论】:
-
在向用户显示货币数据时,您应该使用
NumberFormatter。 -
只需使用 NumberFormatter 来显示您的号码。顺便说一句 0.06999999999999999 和 0.07 它实际上是相同的数字。顺便说一句,我会使用 Decimal 并在需要时将其转换为 NSDecimalNumber
-
问题是您分配的
0.07本身就是Double,它在NSDecimalNumber发挥作用之前引入了精度问题。如果你想要0.07的无损表示,你需要使用NSDecimalNumber初始化器,它接受一个字符串"0.07" -
@Rob:没有必要道歉或解释自己——我不会想到别的。
标签: swift currency nsdecimalnumber