我对BigDecimal类型的百分比有xsd限制
<xs:simpleType name="PercentageRate">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="10"/>
<xs:totalDigits value="11"/>
</xs:restriction>
</xs:simpleType>
现在,我一直想确保我的总位数不超过11位,并且需要根据小数点前的数字动态更新缩放比例。 我已经在Java代码下面编写了代码,但是我只是想知道是否有更好的方法来实现这一点:
BigDecimal myNumber= resultSet.getBigDecimal("MY_NUM");
String numbersBeforeDecimal = myNumber.toPlainString().split("\\.")[0];
if(myNumber!= null){
if(numbersBeforeDecimal.length() == 1){
myNumber.setScale(10,BigDecimal.ROUND_HALF_UP);
}
else{
myNumber.setScale(8,BigDecimal.ROUND_HALF_UP);
}
}
答案 0 :(得分:0)
这应该确保总位数为11
myNumber = new BigDecimal(myNumber.toPlainString(), new MathContext(11, RoundingMode.HALF_UP));