public class Test{
public static void main(String[] args) {
//0 8 92 51.599999999999994
System.out.print(92*0.3);
}
}Compiling Test.java.......
-----------OUTPUT-----------
27.599999999999998[Finished in 3.3s]为什吗会出现这样的运算结果,小数位数为什吗这么多???
public static void main(String[] args) {
//0 8 92 51.599999999999994
System.out.print(92*0.3);
}
}Compiling Test.java.......
-----------OUTPUT-----------
27.599999999999998[Finished in 3.3s]为什吗会出现这样的运算结果,小数位数为什吗这么多???
Java中,浮点类型是依据IEEE754标准的。IEEE754定义了32位和64位双精度两种浮点二进制小数标准。采用二进制表示double,float等浮点数是不准确的。
public static void main(String[] args) {
BigDecimal bigDecimal1 = new BigDecimal(92);
BigDecimal bigDecimal2 = new BigDecimal(0.3);
System.out.print(bigDecimal1.multiply(bigDecimal2).floatValue());
}
}