【发布时间】:2016-03-22 15:17:42
【问题描述】:
为什么java.text.DecimalFormat 会评估以下结果:
new DecimalFormat("0.#").format(23.0) // result: "23"
new DecimalFormat(".#").format(23.0) // result: "23.0"
在这两种情况下,我都希望结果是 23,因为特殊字符 # 省略了零。前导特殊字符0 如何影响小数部分? (试图用 javadoc 中给出的 BNF 来匹配/理解它,但没有这样做。)
【问题讨论】:
-
我想知道
".#"是否是一个有效的格式,如果它不应该是#.#,这也会导致23。 -
@Tom: DecimalFormat(".0") 也可以。在 javadoc 中没有看到任何禁止“.#”之类的内容。
-
“在 javadoc 中没有看到任何禁止“.#”之类的东西的内容 我也没有,但这并不意味着代码可以正确处理这个问题。当
.#或.0无效并且“回退”只打印数字时,DecimalFormat(".0")的工作可能是巧合,因为它会产生相同的字符串 ("23.0")。但同样,这只是一个猜测。 -
标题说 15,示例代码使用 23。:)
-
我的错 :) 谢谢@Bathsheba!
标签: java decimalformat