繁体   English   中英

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

[英]How to not display decimal places unless necessary with DecimalFormat

我正在修改以下代码以格式化双精度格式:“ ###,## 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;
    };
};

答案后得到0的原因是因为您将答案设置为double 将双打设置为十进制答案。 如果没有小数位答案,它将自动将其设置为0,因为小数位后必须有一些东西。

如果要在答案后消除0,最简单的方法是将答案更改为整数。 但是,使用if语句检查小数点后是否只有一个0,这将使您既有整数答案又有双重答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM