0

以下のような要件があります。

私はいくつかの BigDecimal タイプを持っています: 100

i need a method which will take input(100 here) and gives output as 100.1
if 100.1 is passed it should return 100.2
if 100.2 is passed it should return 100.3....etc

最も簡単な解決策はありますか?

ありがとう!

4

1 に答える 1

4

再スケーリングし、1 を追加してから、元に戻すことができます。
@PeterLawrey が示唆するように、これは単に追加するだけで単純化できますBigDecimal.ONE.scaleByPowerOfTen(-scale)

public static BigDecimal increaseBy1(BigDecimal value) {
    int scale = value.scale();
    return value.add(BigDecimal.ONE.scaleByPowerOfTen(-scale));
}

public static void main(String[] args) {
    System.out.println(increaseBy1(new BigDecimal("100.012")));
    System.out.println(increaseBy1(new BigDecimal("100.01")));
    System.out.println(increaseBy1(new BigDecimal("100.1")));
    System.out.println(increaseBy1(new BigDecimal("100")));
}

版画

100.013
100.02
100.2
101

100になりたい場合は100.1、最初の行を

int scale = Math.max(1, value.scale());
于 2012-07-25T11:38:21.397 に答える