我了解到精度是一个值的总位数,而比例是小数点后的位数。据我所知,数字 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?甚至值得担心吗?我可以想象这可能只是一些意想不到的效果,背后没有任何规则/逻辑,但我很好奇我可能遗漏了什么。