繁体   English   中英

更改双精度格式-点到逗号

[英]Change Double format - dot to comma

我必须将Double格式从点更改为逗号。 我尝试这样:

DecimalFormat df = new DecimalFormat("#,00",
                   DecimalFormatSymbols.getInstance(Locale.GERMANY)); 
selectedSheet.addCell(new Number(selectedCellColumn, 
                                 selectedCellRow,
                                 Double.valueOf(df.format(value)));

但它不起作用。 您有任何想法如何将点更改为逗号吗?

对于(我猜)ApachePOI库来设置不同的CellUnitStyle,请使用以下命令:

CellStyle unitStyle = workbook.createCellStyle();
unitStyle.setDataFormat((short) BuiltinFormats.getBuiltinFormat("#,##0.00"));
cell.setCellValue(value);
cell.setCellStyle(unit);

内置了以下格式: ApachePOI内置格式

new Number() -我假设这将double作为第三个参数? 在这种情况下,不可能在传递双精度值之前对其进行格式化,因此需要在单元格格式设置中设置工作表如何显示数字的格式。

还是问题是您有一个字符串,例如“ 5,3”,并希望将其转换为double? 变量value似乎已经包含一个双精度value

您在DecimalFormat的Java文档中有一个符号表:

Symbol   Location    Localized?    Meaning
------------------------------------------
0        Number      Yes           Digit
#        Number      Yes           Digit, zero shows as absent
.        Number      Yes           Decimal separator or monetary decimal separator
-        Number      Yes           Minus sign
,        Number      Yes           Grouping separator
etc...

您使用的是分组分隔符,但您想使用十进制分隔符. ,因此将您的字符串从#,00更改为#.00

DecimalFormat df = new DecimalFormat("#.00", DecimalFormatSymbols.getInstance(Locale.GERMANY));
String format = df.format(3.23456);
System.out.println(format); // prints 3,23

代码:

double value = 123.12345;
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance(Locale.GERMANY);
decimalFormatSymbols.setDecimalSeparator(',');
DecimalFormat df = new DecimalFormat("#.###", decimalFormatSymbols);
System.out.println(df.format(value));
selectedSheet.addCell(new Number(selectedCellColumn, selectedCellRow, Double.valueOf(df.format(value)));

输出:

123,123

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM