Mus*_*afa 5 java floating-accuracy double-precision floating-point-precision
码:
class Main {
public static void main (String[] args) {
System.out.print("float: ");
System.out.println(1.35f-0.00026f);
System.out.print("double: ");
System.out.println(1.35-0.00026);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
float: 1.34974
double: 1.3497400000000002
Run Code Online (Sandbox Code Playgroud)
??? 浮点数得到了正确的答案,但双重是从无处添加额外的东西,为什么?
是不是应该比浮动更精确?
Rah*_*thi 10
浮点数是4个字节宽,而double是8个字节宽.
当然双精度具有更高的精度,因此它的舍入误差略小.
将无限多个实数压缩成有限数量的比特需要近似表示.尽管存在无限多个整数,但在大多数程序中,整数计算的结果可以以32位存储.相反,给定任何固定数量的位,大多数具有实数的计算将产生无法使用那么多位精确表示的量.因此,浮点计算的结果通常必须舍入,以便适应其有限表示.该舍入误差是浮点计算的特征.
在旁注: -
我建议如果你想要精确的十进制值然后使用 java.math.BigDecimal
| 归档时间: |
|
| 查看次数: |
13189 次 |
| 最近记录: |