Mat*_*nes -1 java floating-point double
我正在调试我的程序,其中某些双打和浮动不相等.我在此之前已经找到了答案,为什么会发生这种情况但却找不到相关信息.例如:
System.out.println(4.4f == 4.4);
Run Code Online (Sandbox Code Playgroud)
这打印错误,
System.out.println(4.5f == 4.5);
Run Code Online (Sandbox Code Playgroud)
打印真实.
有人可以解释为什么JAVA会出现这种情况吗?
写入时4.4f,会产生最接近的值,表示为float真值4.4.
当您编写时4.4,会产生最接近的值,表示为double值4.4.
当你写的时候4.4f == 4.4,测试最近的值是否代表a float仍然是最接近的值,表示为double4.4,这是假的; double具有更高的精度,既不能float也double不能完全代表4.4.
二者float并double 可以然而代表4.5准确; 因为他们使用二进制分数,而4.5是精确的二进制分数,所以工作正常.
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |