Преобразуйте двойное значение, чтобы он содержал десятичный разделитель и только две цифры после запятой в groovy - PullRequest
0 голосов
/ 28 сентября 2018

Я хотел бы преобразовать число, такое как следующее:

2937998.7397271004

, чтобы оно выглядело так:

2.937.998,73

Моя попытка добиться этого выглядит следующим образом, но результатвсе еще выглядит так же:

DecimalFormat decimalFormat = new DecimalFormat("###.###.###.###,00");
def val = decimalFormat.format(cell.getNumericCellValue().doubleValue())
return val

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Хотя я не знаком с groovy, поскольку знаю, что он по-прежнему использует библиотеки Java.

Вы не можете использовать умноженные значения в стандартном десятичном формате, как это видно из документации по классу java.: Документация .

Таким образом, следующую строку кода необходимо изменить на:

DecimalFormat decimalFormat = new DecimalFormat("###,###,###,###.00");

, которая ответит 2,937,998,74, используя предоставленное значение 2937998,7397271004.

Если вы хотите сделать это как 2.937.998,74, вы можете, опять же, по крайней мере, в java, сделать следующее.

DecimalFormat decimalFormat = new DecimalFormat("###,###,###,###.00");
DecimalFormatSymbols custom = new DecimalFormatSymbols();
custom.setDecimalSeparator(',');
custom.setGroupingSeparator('.');
decimalFormat.setDecimalFormatSymbols(custom);

String val = decimalFormat.format(cell.getNumericCellValue().doubleValue());

Или использовать локаль, так как другие sugsers sugest.

0 голосов
/ 28 сентября 2018

Вы должны обязательно использовать Locale для этой проблемы.А в твоем случае форматирование немецкое:

import java.text.NumberFormat

NumberFormat numberFormat = NumberFormat.getInstance(Locale.GERMAN);
println numberFormat.format(2937998.7397271004)
0 голосов
/ 28 сентября 2018

Один из способов сделать это - использовать локаль, которая поддерживает ваш шаблон форматирования.Например, Locale.GERMAN соответствует тому, что вы ожидаете

DecimalFormat df = new DecimalFormat("###,###.00",
        DecimalFormatSymbols.getInstance(Locale.GERMAN));
df.format(2937998.7397271004); // 2.937.998,74
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...