【问题标题】:How to make strings from floating-point numbers with '.' (dot) as a decimal separator and not more than 3 digits after floating point?如何使用 '.' 从浮点数创建字符串(点)作为小数分隔符,浮点数后不超过 3 位?
【发布时间】:2012-02-01 12:09:38
【问题描述】:
我有这个代码:
public String formatDouble(double d) {
return String.format("???", d); //Should I use NumberFormat here?
}
对于示例输入:
1.00
1,00
1,23
1.234567
我想得到这个输出:
1
1
1.23
1.234
如何配置模式(或者 NumberFormat 实例)以产生正确的输出?
【问题讨论】:
标签:
java
string
format
number-formatting
【解决方案1】:
这将大致满足您的需求:
Decimalformat df = new DecimalFormat("0.###");
df.setRoundingMode(RoundingMode.FLOOR);
df.format(1.2345);
但是,小数点分隔符(点)将取决于当前的语言环境。要覆盖它,您可能需要提供自己的格式符号(请参阅DecimalFormat.setDecimalFormatSymbols())。
【解决方案2】:
简单方式:String.format("%.2f", 1234.23)
如果需要千位分隔符,请在点前添加逗号:String.format("%,.2f", 1234.23) -> 结果:1,234.23。