计算机中存储数字是用2进制表示的,所有在存储double类型的数据并不能精确到0.1,
所以在用double做操作的时候会因为精度问题出现一些和实际不一样的结果,
如果要求精度很高的话就用BigDecimal来计算,BigDecimal提供了加、减、乘、除的方法,直接调用就可以了。
如:计算两个double型数据相除的百分比
/**
* 计算百分比
* @param s1
* @param s2
* @param scale 对结果保留几位小数
* @return
*/
public static String calculateDiscount(String s1, String s2, int scale) {
if(s1.equals("0.00") || s2.equals("0.00")) {
return "0.0%";
}else {
BigDecimal b1 = new BigDecimal(s1);
BigDecimal b2 = new BigDecimal(s2);
return b2.divide(b1, scale + 2).multiply(new BigDecimal(100)).toString() + "%";
}
}