在 java.lang.Math 中,我們可以看到兩個常量:
公共靜態最終雙 E = 2.7182818284590452354;
公共靜態最終雙 PI = 3.14159265358979323846;
我很好奇為什么 pi 精確到小數點后 20 位,而 E 精確到 19。
uj5u.com熱心網友回復:
這無關緊要,因為Math.E版本無法保持庫中指定的精度。該trunc版本缺少接下來的 4 位數字,但 IEEE754 位與兩者相同。
long elib = Double.doubleToLongBits(2.7182818284590452354);
String elibbits =Long.toBinaryString(elib);
long etrunc = Double.doubleToLongBits(2.718281828459045);
String etruncbits = Long.toBinaryString(etrunc);
System.out.println(elibbits);
System.out.println(etruncbits);
System.out.println(elibbits.equals(etruncbits));
印刷
100000000000101101111110000101010001011000101000101011101101001
100000000000101101111110000101010001011000101000101011101101001
true
也許作者知道超出一定數量的小數位后,多余的數字將被忽略。
這是IEEE754 Wiki 頁面的鏈接。該表表示64位最多可以容納15.95數字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/374632.html
