Я форматирую десятичное число, и у меня есть следующие критерии для его форматирования:
- Число должно содержать не более двух знаков после запятой (10,1234=>10,12).
- Если после запятой стоит только одна цифра, она заканчивается дополнительным 0 (10,5=>10,50).
- Разделителем тысяч будет запятая (12345,2345 => 12 345,23)
Я написал следующую логику:
double x = Double.parseDouble(value.toString());
String dec = x % 1 == 0 ? new java.text.DecimalFormat("###,###.##").format(x) : new java.text.DecimalFormat("###,###.00").format(x);
Сейчас печатает:
11111111111110.567=>11,111,111,111,110.57
111111111111110.567=>111,111,111,111,110.56
1111111111111110.567=>1,111,111,111,111,110.60
11111111111111110.567=>11,111,111,111,111,110
111111111111111110.567=>111,111,111,111,111,104
1111111111111111110.567=>1,111,111,111,111,111,170
Я не понимаю, почему поведение меняется. Как мне напечатать 1111111111111111110.567
как 1,111,111,111,111,111,110.57
?