我正在减去两个 bigDecimal 数字。进入减法方法,它们都具有非零精度,但结果精度= 0。
据我所知,精度为 0 的 bigDecimal 数是不可能的。即使 0 的精度为 1。
精度是未缩放值中的位数。例如,对于数字 123.45,返回的精度为 5。
(另见BigDecimal、precision 和 scale)。
有问题的区域:
BigDecimal test = (centerHP.getReal().subtract(inverseScale));
centerHP.getReal()返回从该行创建的bigDecimal
new BigDecimal(Double.toString(center.getReal()))
对于上下文center.real = -0.79,它是双精度的。
所以它是有效的
new BigDecimal("-0.79")inverseScale 只是 1
double scale = 1;BigDecimal inverseScale = (BigDecimal.ONE.divide(new BigDecimal(Double.toString(scale))));
我希望 test 是一个值为 -1.79 的 bigDecimal,int 表示应该是 -179,精度为 3,小数位数为 2。但是,紧随 BigDecimal 类中减法方法中的加法运算之后,我的值如下:

和测试等于:

请注意,所有其他值都是正确的,只是精度似乎是错误的。
慕的地8271018
呼如林
随时随地看视频慕课网APP
相关分类