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