如何在 Swift 中减去 Double.pi 和 Float.pi?

How do you subtract Double.pi and Float.pi in Swift?

我想做 Double.pi - Float.pi,但出现错误:

Binary operator '-' cannot be applied to operands of type 'Double' and 'Float.

当我将Float转换为Double或将Double转换为Float时(例如:Double(Float.pi)),结果是错误的。我该如何减去他们?

let floatPi = Float.pi
let Pi = Double.pi
print("float pi = \(floatPi)")
print("double pi = \(Pi)")
let substraction = Pi - floatPi
print(substraction)

这是上面的结果:

float pi = 3.1415925

double pi = 3.141592653589793

error: MyPlayground.playground:20:23: error: binary operator '-' cannot be applied to operands of type 'Double' and 'Float' let substraction = Pi - floatPi

当我尝试这个时:

let floatPi = Double(Float.pi)

结果是:

float pi = 3.141592502593994

double pi = 3.141592653589793

1.5099579897537296e-07

您看到差异的原因是 Double 可以更准确地表示 π 的值,因为它使用更多位来获得更高的精度。 Float.piDouble.pi都是通过在FloatDouble类型中尽可能准确地表示π的数学值而创建的,不超过数学值(π的值是四舍五入到零方向上最接近的可表示值)。所以 Float.piDouble.pi 有不同的值,减去它们产生大约 1.5•10−7.

此外,您在使用默认格式打印 Float.piDouble.pi 时看到的十进制数字并不是计算机内部的实际值。 FloatDouble 都使用二进制格式,其中每个数字表示为有效数(实际上是某个整数)乘以 2 的负幂(包括 2 的负幂,例如 2−34,例如)。所以Float.pi的实际值为3.141592502593994140625,Double.pi的实际值为3.141592653589793115997963468544185161590576171875.