java 基础奇怪有关问题

java 基础奇怪问题Java codedouble i 0.80double j 0.20double k [color#FF0000]0.89[/color]do

java 基础奇怪问题

Java code
        double i = 0.80;        double j = 0.20;        double k = [color=#FF0000]0.89[/color];        double f = i+j+k;        System.out.println(f);

输出结果却是:1.8900000000000001


Java code
        double i = 0.80;        double j = 0.20;        double k = [color=#FF0000]0.88[/color];        double f = i+j+k;        System.out.println(f);

输出结果却是:1.88
奇怪!!!!!!

[解决办法]
这个没什么奇怪的,精度问题
[解决办法]
double 精度太大了,改float就行了。我估计是二进制转换造成的!
[解决办法]
Java code
double k = [color=#FF0000]0.89[/color];
[解决办法]
无论是double,还是float,二进制位是有限的,很多小数都是无法精确表示的,遂有了这种问题
[解决办法]
精度问题,所以才会有两个double类型的,不能用=来比较,要进行减法操作。
[解决办法]
本来就存在的问题,精度问题。没什么好奇怪的。
[解决办法]
探讨
无论是double,还是float,二进制位是有限的,很多小数都是无法精确表示的,遂有了这种问题

[解决办法]
float与double都有精度问题,所以计算资金问题的时候还是用高精运算那个工具类吧,别用double和float
[解决办法]
嗯嗯 顶楼上 那个类就是 BigDecimal
[解决办法]
探讨

float与double都有精度问题,所以计算资金问题的时候还是用高精运算那个工具类吧,别用double和float

[解决办法]
精度问题,很正常的,所以一般的计算器程序是不能采用float、double类型的,需要采用高精度类型