java - Java 中非常大的 float 的舍入

标签 java floating-point rounding

Java:

float big = (float) 1e12;
float ulp = Math.ulp(big);

float result = (big + 2/3*ulp) - big;

结果0.0,而我期待的是ulp (65536.0)。有人能解释一下为什么吗?

最佳答案

这是因为 2/3 = 0(整数除法),尝试 2.0/3

关于java - Java 中非常大的 float 的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23236052/

相关文章:

python - 相同的算术运算在 C++ 和 Python 中给出不同的结果

javascript - 为什么 Math.floor() 优于 Math.round()? [JavaScript]

java - Comparator 的 compare() 函数从 Map 中删除重复项

java - 使用 java 属性文件时出现 FileNotFoundException

java - 请解释通过这种方式检索时的列表功能

math - float 学有问题吗?

java - 在 angular2 中发送文件

c++ - 如何检测跨平台浮点行为的差异

python - 将计算列舍入为 1dp

C++ atof/_wtof,舍入误差