除非有必要使用DecimalFormat,否则如何不显示小数位

时间:2013-11-14 18:54:08

标签: java formatting decimalformat

我正在修改以下代码以格式化双精度:“###,## 0。#########”。它通常以它应该的方式工作,但是当我有一个像“123”的数字时,它显示为“123.0”。在这种情况下,如何避免输出小数位?我只想要“123”出现。

阅读Java教程之后,似乎它不应该在小数位后显示任何内容,因为格式化字符串中小数位后面的所有内容都是井号,而不是0。但它不是那样的行为。< / p>

另外,为什么在格式化字符串中首先出现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;
    };
};

1 个答案:

答案 0 :(得分:-1)

你在答案后获得0的原因是因为你已经将答案设置为 double 。双打设置为十进制答案。如果没有任何小数答案,它会自动将其置为0,因为小数点后必须有一些东西。

如果你想在答案之后摆脱0,最简单的方法是将答案改为整数。但是,使用if语句检查小数位后是否只有一个0,这将允许您同时拥有整数答案和双答案。