【发布时间】:2013-11-22 19:21:30
【问题描述】:
我有这个代码示例:
float approx = 1234567712f;
System.out.println(approx);
不是打印“1.234567712E9”或类似的东西,而是打印“1.23456768E9”。据我了解,这与二进制级别的精度有关。
浮点数的精度是多少个二进制位(逗号 (",") 符号之前和之后)?你能简单解释一下为什么会这样吗?
【问题讨论】:
-
这个问题已经以不同的形式被问了 100 次。它总是回到这样一个事实,即 32 位浮点数的“有效位”只有 23 位。您无法将数字表达得比 2^24 中的一个部分更准确。因此在浮点数中,2^24 + 1 == 2^24。和 2^24 ~ 16M。见What every computer scientist should know about floating point
标签: java int type-conversion floating-point-conversion