Запуск этой простой программы:Почему новый 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: ОК, так что это очень старая ошибка:
и на самом деле, она «работает» для любого количества нулей: new BigDecimal("0.0000").stripTrailingZeroes().scale()
это 4!
Возможный дубликат [Разъяснение по поведению BigDecimal.stripTrailingZeroes()] (http://stackoverflow.com/questions/5239137/clarification-on-behavior-of-bigdecimal-striptrailingzeroes) –
Вопрос, на который ссылается Эндрю, это действительно то же самое, но имейте в виду, что принятый ответ неверен. Поведение, которое вы видите, это ошибка, упомянутая в другом ответе: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 – jarnbjo