如何使用 BigDecimal 验证精度和小数位数?
2022-09-03 05:15:06
我试图验证大小数的精度和小数位数。
我希望验证大十进制数不会超过10的精度或2的小数位数。我尝试做一个最大长度,这样值就不会违反我的db长度约束,但也无法让它工作。有人可以好心地为我指出解决这个问题的方向吗?
我试图验证大小数的精度和小数位数。
我希望验证大十进制数不会超过10的精度或2的小数位数。我尝试做一个最大长度,这样值就不会违反我的db长度约束,但也无法让它工作。有人可以好心地为我指出解决这个问题的方向吗?
该类有三种方法可能对此感兴趣:BigDecimal
precision()
,返回未缩放值的位数(例如,对于数字 123.45,返回的精度为 5)scale()
,当正数(可以是负数)时,返回小数点分隔符后面的位数,在这种情况下,数字的未缩放值乘以十的幂,以否定刻度。例如,小数位数为 -3 表示未缩放的值乘以 1000),scale()
stripTrailingZeros()
,返回 从表示法中删除所有尾随零的 a。BigDecimal
例如,要计算给定b的精度和小数位数,我们可以这样写:BigDecimal
BigDecimal noZero = b.stripTrailingZeros();
int scale = noZero.scale();
int precision = noZero.precision();
if (scale < 0) { // Adjust for negative scale
precision -= scale;
scale = 0;
}