除非使用十进制格式,否则如何不显示小数位



我正在修改以下代码以格式化双精度:"###,##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 的原因是因为你将答案设置为双精度。双精度设置为十进制答案。如果没有小数答案,它会自动将其放置为 0,因为小数位后一定有东西。

如果要删除答案后面的 0,最简单的方法是将答案更改为整数。但是,使用 if 语句检查它在小数位后是否只有一个 0,将允许您同时获得整数答案和双精度答案。

相关内容

  • 没有找到相关文章

最新更新