- 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类型的,不能用=来比较,要进行减法操作。
------解决方案--------------------
本来就存在的问题,精度问题。没什么好奇怪的。
------解决方案--------------------
------解决方案--------------------
float与double都有精度问题,所以计算资金问题的时候还是用高精运算那个工具类吧,别用double和float
------解决方案--------------------
嗯嗯 顶楼上 那个类就是 BigDecimal
------解决方案--------------------
------解决方案--------------------
精度问题,很正常的,所以一般的计算器程序是不能采用float、double类型的,需要采用高精度类型