为什么有些数字在存储为浮点数时会失去准确性?
例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:
32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)
这样一个看似简单的数字如何在64位内存中表达"太大" ?
我找不到任何资源,我一直在尝试各种各样的东西,但没有任何作用.
根据Apple的文档,你可以像这样围绕NSDecimalNumber:
NSDecimalNumber.decimalNumberByRoundingAccordingToBehavior(<#behavior: NSDecimalNumberBehaviors?#>)
Run Code Online (Sandbox Code Playgroud)
它接受一个NSDecimalNumberBehavior,我不确定如何操作,因为它(1)不能启动到变量并且它的属性已更改,并且(2)根据文档的roundingMode()方法不接受任何参数,但Xcode填写"自我"的参数空间.
我完全迷失了.回到基本问题; 如何在swift中舍入NSDecimalNumber?
提前致谢