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