为大十进制生成动态缩放

时间:2018-10-03 08:55:00

标签: java bigdecimal

我对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);
            }

        }

1 个答案:

答案 0 :(得分:0)

这应该确保总位数为11

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