我有几个关于 float 和 iOS 设备的问题:
在给定的 iOS 设备上, float 是否具有确定性?
float 在所有 iOS 设备上都是确定的吗?
如果不是,是否有办法使它们具有确定性?我在想的是:更改编译器设置、使用简化的数学运算集等。
如果没有任何办法,最好的选择是什么?
我可以改用定点吗?这是否意味着使用 NSDecimalNumber?
干杯。
最佳答案
相同数据大小的结果应该是相同的。 IEEE 浮点标准规定了对不同大小的 float 进行不同浮点运算的结果。
如果不同数据类型的定义因架构而异,您可能会遇到麻烦。
“float”的大小在 ANSI C 中没有正式定义。它在某些平台上可以是 4 个字节,在其他平台上可以是 8 个字节。 (例如,NSInteger 在 32 位设备上是 32 位,在 64 位设备上是 64 位。我知道它是一个整数类型,但它是一个根据平台改变大小的类型的例子。)
我不知道 Apple 是否更改了其 32 位和 64 位平台之间任何数据类型的大小。也许有确切了解的人可以在这里插话。
最新的 iOS 设备是 64 位的。我建议检查 float/CGFloat 的大小(使用 sizeof()。)如果您无法访问新的 64 位设备之一,您应该能够使用 64 位模拟器对其进行测试。
好像是
关于ios - 跨 iOS 设备的 float 是否具有确定性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441106/