【发布时间】:2014-10-18 14:57:22
【问题描述】:
我有几个关于浮点数和 iOS 设备的问题:
浮点数在给定的 iOS 设备上是否具有确定性?
浮点数是否在所有 iOS 设备上都具有确定性?
如果不是,有没有办法使它们具有确定性?我在想的是:编译器设置的更改,减少数学运算集的使用等。
如果没有办法,最好的选择是什么?
我可以改用固定点吗?这是否意味着使用 NSDecimalNumber?
干杯。
【问题讨论】:
-
你能澄清一下你所说的确定性是什么意思吗?你有什么问题?请注意,编译器设置会影响 IEEE 浮点兼容性,因此您需要检查 Xcode 设置以确保在编译时设置了正确的标志。
-
我希望我的代码具有确定性。我希望一个返回浮点数的操作在不同的操作系统和设备上返回完全相同的值。我不太关心结果的精度,它只需要稳定。 randomascii.wordpress.com/2013/07/16/floating-point-determinism
-
对于任何 IEEE 浮点运算,如果输入完全相同(包括系统设置),您将获得完全相同的输出。对于 iOS,您只会冒险在具有不同大小值的整数类型的 iOS 版本之间存在差异,并且只有在较小的值发生溢出(即错误)时才会发生这种情况。
-
@Hot Licks “系统设置”是什么意思?另外,“对于任何 IEEE 浮点运算”是否意味着遵循 IEEE 标准的运算?
-
设置可能会改变浮点处理单元使用的舍入规则。不过,我从未听说过这些是在 iPhone 上被操纵的。是的,“IEEE 浮动操作”是指 IEEE 754 标准。
标签: ios objective-c floating-point deterministic