计算浮点数4.78的整数部分和小数部分
Java code
float f = 4.78f;
System.out.println((int)f);
System.out.println(f - (int)f);
  结果输出
4
0.7800002
不应该是
4
0.78吗
------解决方案-------------------- 浮点数的精度问题
------解决方案-------------------- float和double型由于二进制计数的根本原因,计算结果会出现误差,所以一般计算的时候使用
System.out.println(((float)Math.round( (f-(int)f) *100)/100));
------解决方案-------------------- float、double类型自身的精度问题!
------解决方案-------------------- 再多说一点,在计算机中浮点的十进制的二进制数可能不够准确,例如2.4的二进制数表示的并非精确的2.4,可能是更接近二进制表示2.39999999(这个是举例不一定准确),所以通过计算出来的更不准确了。
------解决方案-------------------- 浮点运算都会出现你这样的问题的。
不过好在Java提供了一种机制可以避免出现这种情况,用BegDecimal
------解决方案-------------------- Java code
BigDecimal f = new BigDecimal(7.48);
        BigDecimal i = new BigDecimal(7);
        f = f.subtract(i);
        System.out.println(f.floatValue());
------解决方案--------------------  探讨 ------解决方案-------------------- ------解决方案-------------------- ------解决方案--------------------