1

我了解到精度是一个值的总位数,而比例是小数点后的位数。据我所知,数字 1234.56 的精度 = 6,比例 = 2。

我还看到,当您使用 MathContext 定义一个精度,然后创建一个比定义的精度更高的 BigDecimal 时,输出会被转换,例如

    MathContext mc = new Mathcontext (6) 
    BigDecimal bd = new BigDecimal ("1234567", mc)
    System.out.println(bd);
    //bd is printed as 1.23457E+6

但是,当我在创建 BigDecimal 时添加 setScale 时,无论 MathContext 中定义的精度如何,BigDecimal 都会被正确打印,例如

    MathContext mc = new Mathcontext (6) 
    BigDecimal bd = new BigDecimal ("1234567", mc).setScale(1)
    System.out.println(bd);
    //bd is printed as 12345670.0

为什么它将 BigDecimal 显示为 12345670.0,精度 = 9?甚至值得担心吗?我可以想象这可能只是一些意想不到的效果,背后没有任何规则/逻辑,但我很好奇我可能遗漏了什么。

4

0 回答 0