Запуск этой простой программы:
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
? Это казалось бы логичным...
ИЗМЕНИТЬ: ОК, так что это очень старая ошибка:
и на самом деле он "работает" для любого числа нулей: new BigDecimal("0.0000").stripTrailingZeroes().scale()
равно 4!