我想转换一个数字,如下所示:
2937998.7397271004
看起来像这样:
2.937.998,73
我为达到这个目的的尝试如下,但结果仍然相同:
DecimalFormat decimalFormat = new DecimalFormat("###.###.###.###,00");
def val = decimalFormat.format(cell.getNumericCellValue().doubleValue())
return val
答案 0 :(得分:4)
一种方法是使用支持您的格式设置模式的语言环境。例如Locale.GERMAN
符合您的期望
DecimalFormat df = new DecimalFormat("###,###.00",
DecimalFormatSymbols.getInstance(Locale.GERMAN));
df.format(2937998.7397271004); // 2.937.998,74
答案 1 :(得分:1)
对于此问题,您绝对应该使用区域设置。在您的情况下,格式为德语:
import java.text.NumberFormat
NumberFormat numberFormat = NumberFormat.getInstance(Locale.GERMAN);
println numberFormat.format(2937998.7397271004)
答案 2 :(得分:-1)
尽管我对groovy并不熟悉,但据我所知它仍在使用java库。
如Java类文档Documentation所示,您不能在标准DecimalFormat上使用倍数。。
因此,以下代码行需要更改为:
DecimalFormat decimalFormat = new DecimalFormat("###,###,###,###.00");
哪个将使用提供的2937998.7397271004值响应2.937.998,74。
如果要以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());
或将语言环境用作其他请求者提出的建议。