Họ không lưu trữ π với độ chính xác điểm nổi bất thường. Họ đang sử dụng một giá trị không chính xác cho π với độ chính xác gấp đôi. Để xấp xỉ 3,1415926536 ở dạng nhị phân, cần ít nhất 38 bit:
3.14159265359922… > 11.001001000011111101101010100010001001
Lưu ý rằng 2 ^ -36 là khoảng 1,5e-11, trùng khớp với dấu 99. Điểm nổi chính xác kép có ý nghĩa 52 bit. Để đánh giá cos(pi/2)
là -5e-12, sự lựa chọn duy nhất khác có thể là loại 48 bit, sẽ rất lạ.
Gần 0 và π, trong đó đạo hàm gần bằng 0, cos (θ) không thể được tính toán chính xác:
cos(3.1415926536) ≈ -0.999999999999999999999947911
Điều đó khác với -1 khoảng 5,2e-23, nhỏ hơn cho double
, do đó, cos(3.1415926536)
được tính chính xác là -1 ... không chính xác.
Gần ± π / 2, đạo hàm [ -sin (θ) ] gần bằng 1, do đó, lỗi ở đầu vào trở thành đầu ra.
cos(1.57079632679961) ≈ -4.71338076867830836e-12
cos(1.57079632679962) ≈ -4.72338076867830836e-12
cos(1.57079632680000) ≈ -5.10338076867830836e-12
Tôi cos(π/2)
tình cờ có một máy tính TI hiển thị một chữ số ít hơn và tính là -5.2e-12. Tuy nhiên, nó rất khác nhau về mặt điện tử và được thiết kế để đưa ra một giá trị chính xác cho cos(90°)
.
Tôi đoán rằng trong Spotlight, cos(pi/2)
đang được tính bằng cách truy xuất giá trị cho số π, chuyển đổi thành chuỗi thập phân , lưu trữ dưới dạng giá trị nhị phân (chính xác, hợp lý) 11.00100100001111110110101010001000100100001101101111 (hoặc 10000), sau đó chia cho 2 các giá trị đúng của π / 2. Bạn nên tìm hiểu xem cos(pi/2 + cos(pi/2))
có gần với không hơn không (có thể là -2.2e-35).
Phép nhân với lũy thừa của hai chỉ nên ảnh hưởng đến số mũ chứ không ảnh hưởng đến số mũ. Có thể xác định cách làm tròn được áp dụng bằng cách lặp lại gấp đôi hoặc nhân đôi.