Силовая точка («.») Как десятичный разделитель в Java

В настоящее время я использую следующий код для печати двойного кода:

return String.format("%.2f", someDouble);

Это работает хорошо, за исключением того, что Java использует мой десятичный разделитель (запятую) в Locale, а я хочу использовать точку Есть ли простой способ сделать это?

87 голосов | спросил dtech 8 MarpmTue, 08 Mar 2011 20:28:27 +03002011-03-08T20:28:27+03:0008 2011, 20:28:27

6 ответов


0

Используйте перегрузку String.format , который позволяет указать языковой стандарт:

return String.format(Locale.ROOT, "%.2f", someDouble);

Если вы только форматируете число - как вы здесь - тогда, вероятно, используйте NumberFormat быть более подходящим Но если вам нужны остальные возможности форматирования String.format, это должно работать нормально.

ответил Jon Skeet 8 MarpmTue, 08 Mar 2011 20:32:24 +03002011-03-08T20:32:24+03:0008 2011, 20:32:24
0

Более радикальное решение состоит в том, чтобы установить локаль в начале функции main ().

Как

Locale.setDefault(new Locale("en", "US"));
ответил Federico Giorgi 28 MaramMon, 28 Mar 2011 05:17:35 +04002011-03-28T05:17:35+04:0005 2011, 05:17:35
0

Вы можете передать дополнительную локаль в java.lang.String.format, а также в java.io.PrintStream.printf (например, System.out.printf ()):

import java.util.Locale;

public class PrintfLocales {

    public static void main(String args[]) {
        System.out.printf("%.2f: Default locale\n", 3.1415926535);
        System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535);
        System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535);
    }

}

Это приводит к следующему (на моем ПК):

$ java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

Смотрите String.format в Java API.

ответил Simon A. Eugster 8 MarpmTue, 08 Mar 2011 20:38:39 +03002011-03-08T20:38:39+03:0008 2011, 20:38:39
0

Слишком поздно, но, как уже упоминалось, приведен пример использования NumberFormat (и его подкласса DecimalFormat)

public static String format(double num) {
    DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
    decimalSymbols.setDecimalSeparator('.');
    return new DecimalFormat("0.00", decimalSymbols).format(num);
 }
ответил VizGhar 24 MarpmFri, 24 Mar 2017 13:36:32 +03002017-03-24T13:36:32+03:0001 2017, 13:36:32
0

Вы можете использовать NumberFormat и DecimalFormat.

Посмотрите на эту ссылку из учебных пособий по Java LocaleSpecific Formatting

Вам нужен раздел под названием «Чувствительное к локали форматирование».

ответил blong824 8 MarpmTue, 08 Mar 2011 20:33:07 +03002011-03-08T20:33:07+03:0008 2011, 20:33:07
0

У меня была та же проблема .. 55.1 преобразовано в 55,10. Мое быстрое (грязное?) Исправление:

String.format("%.2f", value).replaceAll(",",".");

ответил fred' 24 J000000Tuesday18 2018, 17:00:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132