String.format("%.2f", temp)
будет использовать текущую локаль системы. Процитирую метод Javadoc:
Всегда используется локаль, возвращаемая java.util.Locale # getDefault ()
Ваш код будет работать, если языковой стандарт по умолчанию - английский, что можно проверить с помощью перегруженной версии String.format()
:
String s = String.format(Locale.ENGLISH, "%.2f", temp).trim();
z = Float.parseFloat(s); // works, a dot is used for fractions separator
, но потерпит неудачу, если, например, немецкий язык установлен по умолчанию:
String s = String.format(Locale.GERMAN, "%.2f", temp).trim();
z = Float.parseFloat(s); // fails, a comma is used for fractions separator
Поскольку Float.parseFloat()
не поддерживает концепцию локали, вы должны убедиться, что вы используете String.format()
для получения ожидаемого формата. Один из способов обеспечения того, чтобы ваш код работал независимо от локали по умолчанию, - это использование константы Locale.ROOT
:
String.format(Locale.ROOT, "%.2f", temp)