它们没有以异常的浮点精度存储π。他们为π使用了不正确的值,具有双精度。为了近似二进制数3.1415926536,至少需要38位:
3.14159265359922… > 11.001001000011111101101010100010001001
请注意,2 ^ -36约为1.5e-11,与结尾的99一致。 双精度浮点的有效位数为52位。要评估cos(pi/2)
为-5e-12,唯一可能的选择是48位类型,这很奇怪。
在0和π附近(导数几乎为零),无法非常精确地计算cos(θ):
cos(3.1415926536) ≈ -0.999999999999999999999947911
与-1的差约为5.2e-23,小于的ε double
,因此cos(3.1415926536)
计算为正好为 -1 ...,这是不正确的。
接近±π/ 2时,导数[ -sin(θ) ]接近±1,因此输入端的误差变为输出端的误差。
cos(1.57079632679961) ≈ -4.71338076867830836e-12
cos(1.57079632679962) ≈ -4.72338076867830836e-12
cos(1.57079632680000) ≈ -5.10338076867830836e-12
我碰巧有一个TI计算器,显示的位数减少了一位,并计算cos(π/2)
为-5.2e-12。但是,它在电子上有很大的不同,旨在提供的准确值cos(90°)
。
我猜想在Spotlight中,cos(pi/2)
是通过获取π的值,转换为十进制字符串,将其存储为(精确,有理)二进制值11.00100100001111110110101010001000100100001101101111(或10000),然后除以2,然后从中减去π/ 2 的真实值。您应该找出是否cos(pi/2 + cos(pi/2))
接近零(可能是-2.2e-35)。
乘以2的幂只会影响指数,而不影响有效位数。通过重复减半或加倍,可以确定如何应用舍入。