以下のような要件があります。
私はいくつかの 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
最も簡単な解決策はありますか?
ありがとう!
以下のような要件があります。
私はいくつかの 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
最も簡単な解決策はありますか?
ありがとう!
再スケーリングし、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());