java浮点运算问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:13:33
public static void main(String[] args) {
double priceDouble = 0.0D;
priceDouble = 85d * 0.01d * 1.8f;
System.out.println(priceDouble);
}
结果为1.5299999594688416不是1.53,想了想可能是double和float乘的时候float自动转换为double时出的问题,后来全部又试了下全部用float相乘,怎么还是得不到正确的结果
System.out.println(85f * 0.01f * 1.8f);
结果为1.5299999
现在我有3个数,其中有一个float,3个数相乘,能够得到正确的结果吗?

浮点数是有误差的,浮点截断

我记得JAVA有个极限计算问题,在DOUBLE中*或者/永远无法得到精确的答案,我以前做计算器的时候就出现过你这样的问题,永远是X.999999999,需要使用到一个极限计算的原理,忘记叫什么了,非常难

正常的,如果要想得到自己的记过,自己处理。