Почему некоторые числа с плавающей запятой отображаются с завершающим 0

Кто-нибудь знает, почему числа от 0,001 до 0,009 отображаются в строку с завершающим 0, а другие числа - нет. например, числа от 0,01 до 0,09 не работают.

System.out.println(Locale.getDefault());
for (int i = 0; i <= 20; i++)
    System.out.println(i / 1e3);

печатает

en_GB
0.0
0.0010
0.0020
0.0030
0.0040
0.0050
0.0060
0.0070
0.0080
0.0090
0.01
0.011
0.012
0.013
0.014
0.015
0.016
0.017
0.018
0.019
0.02

РЕДАКТИРОВАТЬ Код для DecimalFormat, похоже, не зависит от локали. Если я запустил

for (Locale l : Locale.getAvailableLocales())   {
    Locale.setDefault(l);
    System.out.println(l + " " + 1 / 1e3);
}

на Java 6, обновление 26 на Ubuntu 11.04, я получу

ja_JP 0.0010
es_PE 0.0010
en 0.0010
... many locales with the same result ...
sv_SE 0.0010
da_DK 0.0010
es_HN 0.0010

на Java 7 в той же системе я получаю

ms_MY 0.001
ar_QA 0.001
is_IS 0.001
... many locales with the same result ...
el_CY 0.001
hu 0.001
fr_FR 0.001
20
задан Sanjay T. Sharma 27 September 2011 в 06:32
поделиться