我知道可以正确比较的整数范围是-(2^53 - 1)到2^53 - 1。
但是浮点数的范围是多少呢?
// Should the double type conform to this specification? I guess
double c = 9007199254740990.9;
double d = 9007199254740990.8;
System.out.println(c > d); // return false
Run Code Online (Sandbox Code Playgroud)
没有特定的范围可以保证浮点数的正确比较——这需要存在无限多个double表示形式。
所有double数字的二进制表示形式均精确到 53 位有效数字。如果两个数字仅在第 54 个有效二进制数字上不同,则它们通常具有相同的double表示形式,除非四舍五入使它们不同。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |