输出结果怎么会是这个一个小数呢?
public static void main(String[] args) {
System.out.println(15.2 % 5);//计算结果:0.1999999999999993
}
------解决方案--------------------
BigDecimal 挺好用的。
------解决方案--------------------
float和double都有这问题
要精确的话最好用Bigdecimal
------解决方案--------------------
System.out.println(new BigDecimal(15.2%5).floatValue());
挺好用
------解决方案--------------------
double 和 float两个类型在java中本身就是非精确存储的,再用两个近似值去做计算,得到的结果就只能是一个近似值了。
------解决方案--------------------
//使用BigDecimal四舍五入保留2位小数
double val = 15.2 % 5;
BigDecimal bd = new BigDecimal(val);
val = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(val);//打印0.2
------解决方案--------------------
两个数有一个是double,结果就是double的。
四舍五入网上太多了,不再赘述。
看一下:
java.math
类 BigDecimal
java.lang.Object
继承者 java.lang.Number
继承者 java.math.BigDecimal