1

BigDecimal类具有以下算术和舍入方法:

BigDecimal add     (BigDecimal y)
BigDecimal subtract(BigDecimal y)
BigDecimal multiply(BigDecimal y)
BigDecimal divide  (BigDecimal y, [int scale,] RoundingMode rm)
BigDecimal setScale(int scale, RoundingMode rm)

divideandsetScale方法有scale参数,它定义了方法结果中小数点后的位数。我们可以使用此参数将数字四舍五入,例如,保留 2 个小数位,以便将其显示给用户或将它们存储在数据库中。

Java 5 为 BigDecimal 类引入了以下新方法:

BigDecimal add     (BigDecimal y, MathContext mc)
BigDecimal subtract(BigDecimal y, MathContext mc)
BigDecimal multiply(BigDecimal y, MathContext mc)
BigDecimal divide  (BigDecimal y, MathContext mc)
BigDecimal round   (MathContext mc)

MathContext mc参数定义方法结果的精度,即其中的总位数,即小数点前后的位数。但是mc参数的目的是什么?例如,我不认为将数字四舍五入到 7 位以将其显示给用户,因为如果四舍五入的数字在小数点后有不同的位数,那么舍入到 7 位的意义何在? 也许是为了定义中间结果的精度,例如除法 1/3 = 0.3333333333333333?

不幸的是,API 文档中没有描述 MathContext 参数的用途。我没有代码可以显示,我只是学习Java,想知道这个参数的含义。

4

0 回答 0