float大概精确到小数点后7位,double精确位数是float的两倍。浮点数存在舍入误差,数字不能精确表示。
BegDecimal通常使用在不能产生舍入误差的计算中。
例如:
import java.math.BigDecimal;
public class Main{
public static void main(String[ ] args){
BigDecimal bd = BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
System.out.println(bd);//0.5
System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5000000000000001
}
}
BigDecimal没有运算符,计算加减乘除等需要具体的方法,例如:subtract();
BigDecimal处理舍入误差的计算
最新推荐文章于 2024-03-20 15:40:15 发布