이 간단한 프로그램을 실행 :왜 새로운 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
? 즉 ... 논리적 인 것 같다
편집 : 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