【发布时间】:2013-11-14 18:54:07
【问题描述】:
我正在修改以下代码以格式化双精度:“###,##0.#########”。它通常按应有的方式工作,但是当我有一个像“123”这样的数字时,它会显示为“123.0”。在这种情况下,如何避免输出小数位?我只想显示“123”。
阅读 Java 教程后,它似乎不应该在小数点后显示任何内容,因为格式化字符串中小数点后的所有内容都是井号,而不是 0。但它的行为并非如此。
另外,为什么格式化字符串中的第一个位置是 0,之前是小数位?
编辑:我的完整代码如下。我是这个项目的新手,但仍在试图弄清楚它为什么这样做:
textField = new TextField("field", Double.class) {
public org.apache.wicket.util.convert.IConverter getConverter(
Class type) {
DoubleConverter converter = (DoubleConverter) DoubleConverter.INSTANCE;
java.text.NumberFormat numberFormat = converter
.getNumberFormat(getLocale());
java.text.DecimalFormat decimalFormat = (java.text.DecimalFormat) numberFormat;
decimalFormat.applyPattern("###,##0.#########");
converter.setNumberFormat(getLocale(),
decimalFormat);
return converter;
};
};
【问题讨论】:
-
使用
DecimalFormat中的格式字符串,我得到double值以打印为123,而不是123.0。 -
@rgettman ,你是对的。我只是在我编写的一个单独的测试程序中测试了同样的东西。但看起来这还不是全部。我已经粘贴了上面的完整代码。
-
也许您应该考虑重新提出问题?这似乎是检票口代码中发生的事情,而不是
DecimalFormat代码。您是否尝试在DecimalFormat.format()中放置调试断点?查看实际调用它的位置和时间,以及当时的情况?
标签: java formatting decimalformat