关于浮点型运算问题

double相加,浮点数相加,都会出现不精确的情况!!!!!只能用String构造的BigDecimaladd

float型不会出现乱加的情况,但因为只能有8位,所以会出现乱截取情况。

参见:http://www-128.ibm.com/developerworks/cn/java/j-jtp0114/index.html

这样解决:

// 用于精确计算,只有用String构造的BigDecimal可以实现精确计算

public static double add(double d1, double d2) {

Double dd1 = new Double(d1);

Double dd2 = new Double(d2);

String s1 = dd1.toString();

String s2 = dd2.toString();

BigDecimal bd1 = new BigDecimal(s1);

BigDecimal bd2 = new BigDecimal(s2);

return bd1.add(bd2).doubleValue();

}

 

public static double sub(double d1, double d2) {

Double dd1 = new Double(d1);

Double dd2 = new Double(d2);

String s1 = dd1.toString();

String s2 = dd2.toString();

BigDecimal bd1 = new BigDecimal(s1);

BigDecimal bd2 = new BigDecimal(s2);

return bd1.subtract(bd2).doubleValue();

}

你可能感兴趣的:(html,IBM,J#)