数值计算: 精度、溢出、舍入
精确表示浮点数: BigDecimal
BigDecimal 的 Double 入参的构造方法存在精度丢失问题,需要使用 String 入参的构造方法或者 BigDecimal.valueOf 方法进行初始化;
浮点数精确计算,参与计算的各种数值需使用 BigDecimal,所涉及的计算都要通过 BigDecimal 方法进行,因为任何一个环节出现精度损失,最后的计算结果可能都会出现误差。
对于浮点数的格式化, String.format 的使用的是四舍五入,而 DecimalFormat 能明确指定舍入方式。
数值计算的溢出
数值运算需要注意溢出问题,由于溢出后不会存在异常抛出,会导致最后的计算结果不符合预期。但是我们可以通过考虑使用 Math.xxxExact 方法进行避免,因为其在溢出时能抛出异常,涉及大数运算时可以使用 BigInteger 类。
评论