Генерация динамического масштаба для большого десятичного числа - PullRequest
0 голосов
/ 03 октября 2018

У меня есть ограничение xsd на мой процент, который имеет тип BigDecimal

<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 голосов
/ 03 октября 2018

Предполагается, что общие цифры равны 11

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