Java中要使用 BigDecimal(定点数) 进行小数的相关操作,避免使用float等浮点数,因为 float, double等浮点的存储和操作(比如:相加,相减...)存在误差(7.22f - 7.0f = 0.21999979 而不是 0.22)。
下面以 BigDecimal 进行减法为例:
/**
* 精确的减法
*/
public static double subtract(double v1, double v2)
{
BigDecimal d1 = new BigDecimal(Double.toString(v1));
BigDecimal d2 = new BigDecimal(Double.toString(v2));
return d1.subtract(d2).doubleValue();
}
// subtract(7.22d, 7.0d) == 0.22
BigDecimal 提供了 add, divide, subtract 等一系列相关的 加、减、乘、除、取模 等操作。
来源:oschina
链接:https://my.oschina.net/u/59889/blog/510656