我正在修改以下代碼以格式化雙打:「###,## 0。#########」。它通常以它應該的方式工作,但是當我有一個像「123」這樣的數字時,它將顯示爲「123.0」。在這種情況下,如何避免輸出小數位?我只想要「123」出現。如何不顯示小數位數,除非必要使用DecimalFormat
閱讀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
@rgettman,你是對的。我只是在我寫的一個單獨的測試程序中測試了相同的東西。但看起來並不是這樣。我粘貼了上面的完整代碼。 –
也許你應該考慮重述問題呢?這似乎是在Wicket代碼中發生的事情,而不是'DecimalFormat'代碼。你有沒有嘗試在'DecimalFormat.format()'中放置一個調試斷點?看看它實際被調用的位置和時間,以及當時的狀態是什麼? – dcsohl