【发布时间】:2020-11-02 10:25:39
【问题描述】:
我需要这样的格式数字:
23.0 -> 23
23.20 -> 23.20
23.00 -> 23
23.11 -> 23.11
23.2 -> 23.20
23.999 -> 24
23.001 -> 23
1345.999 -> 1346 // Edited the question to add this from the OP's comment
这是我的代码: 爪哇:
public static String toPrice(double number) {
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setGroupingSeparator(' ');
DecimalFormat format = new DecimalFormat("#,###,###.##", formatSymbols);
return format.format(number);
}
科特林:
fun Double.toPrice(): String = DecimalFormat("#,###,###.##", DecimalFormatSymbols().apply {
groupingSeparator = ' '
}).format(this)
但是对于输入 23.20 或 23.2,我得到的结果是 23.2。这对我来说是错误的。我需要 23.20。我应该使用哪种字符串模式来实现这个结果?请帮帮我。
【问题讨论】:
-
您错误地使用了“模式”一词。在编程中,设计模式是解决特定问题的非常具体的示例。尽管我认为您错了,但您只需要一些格式化方面的帮助。将数字显示为 21.00 表示您知道该数字的精度高于仅显示为 21 的数字。
-
@NomadMaker
DecimalFormat类始终将其字符串模板称为“模式”;在这种情况下,构造函数参数称为pattern。因此,这样称呼它似乎是完全合理的。 (设计模式不是唯一的模式。) -
@ArvindKumarAvinash 你说的不正确。链接问题的(我的)答案为
23.20的输入生成23.20,并且也满足所有其他示例。这与 Cenfracee 的答案非常相似。除了特别提到DecimalFormat,这个问题是重复的。我认为DecimalFormat不是合适的工具或这里的工作,String.format()要简单得多。 -
@ArvindKumarAvinash 删除 cmets 时很难回复。在
23.001的情况下,上面帖子中的答案将产生23,这是所需要的。
标签: java kotlin double decimalformat