Этот код действительно зависит от локали. Если ваш код зависит от местоположения, такого как США, где "." это десятичный разделитель, а "," это разделитель тысяч, и затем вы запустите этот код на сервере, настроенном, например, на немецкую локаль, он потерпит неудачу.
Рассмотрите возможность использования этого конструктора , который позволяет вам явно указать, какие символы вы используете.
РЕДАКТИРОВАТЬ: насколько я могу судить, вы пытаетесь отформатировать числа с помощью "." в качестве разделителя тысяч и "," в качестве десятичного разделителя. Другими словами, формат используется во Франции и Германии. Вот один подход, который достигнет этого:
public static String generateFormatPrice(double price) {
final NumberFormat format = NumberFormat.getNumberInstance(Locale.GERMANY);
format.setMinimumFractionDigits(2);
format.setMaximumFractionDigits(2);
return format.format(price);
}
Кроме того, вам не следует использовать двойное число для хранения денежного значения - в этом случае вы столкнетесь с некоторыми неприятными ошибками.