この簡単なプログラムを実行:なぜ新しいBigDecimal( "0.0")。stripTrailingZeros()のスケールは1ですか?
public static void main(final String... args)
{
System.out.println(BigDecimal.ZERO.scale());
System.out.println(new BigDecimal("0").scale());
System.out.println(new BigDecimal("0.0").stripTrailingZeros().scale());
System.out.println(new BigDecimal("1.0").stripTrailingZeros().scale());
}
出力:
0
0
1
0
私の質問はかなり単純です:なぜいない第三println
出力0
?それは論理的と思われる...
EDIT:OK、そう、これは非常に古いバグです:
と実際には、そのゼロの任意の数の "作品":new BigDecimal("0.0000").stripTrailingZeroes().scale()
4です!
[BigDecimal.stripTrailingZeroes()の動作の明確化](http://stackoverflow.com/questions/5239137/clarification-on-behavior-of-bigdecimal-striptrailingzeroes) –
Andrewがリンクしている質問は確かに同じですが、受け入れられた答えが間違っていることに注意してください。表示される動作は、他の回答に記載されているバグです:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 – jarnbjo