我的百分比类型为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);
            }

        }

最佳答案

这应该确保总位数为11

myNumber  = new BigDecimal(myNumber.toPlainString(), new MathContext(11, RoundingMode.HALF_UP));

关于java - 为大十进制生成动态缩放,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52623240/

10-11 22:15
查看更多