Swift 中浮点数的定点表示

pot*_*ato 1 fixed-point swift

我试图在 Swift 中准确地表示浮点数。假设我们有一个 number let doubleNumber = 16.756。问题在于实际数字类似于16.7560009. 此外,在不同的手机上16.7559991,例如,由于处理器不平等。定点算术应该是这类问题的答案,但我不知道如何在 Swift 中解决它。老实说,在其他语言中也没有。那么如何在 Swift 中创建浮点数的定点表示呢?

我问的原因是,在跨设备准确模拟物理时,浮点数值的微小差异会导致完全不同的物理模拟。

gna*_*729 5

您提供的数字表明您使用的是 Float,而不是 Double。Float 只有大约 6 位精度,Double 大约有 15 位精度。记住 CGFloat 要么是 Float 要么是 Double,所以不要使用它。

Swift 使用 IEEE 754 标准浮点运算。只要您始终如一地使用 Double,不同的处理器之间就不应该有任何区别。

现在来了一个非常关键的点:如果不同处理器上浮点运算的细微差别产生了完全不同的模拟,那么这两个模拟都与现实没有任何关系,因此完全没有用。或者它们都显示了许多可能结果中的一种,然后再一次,你显示哪一个没有区别。