[英]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.