我的DecimalFormat
有時會返回'?'當試圖format()
。有沒有可能會產生這種情況的輸入?Java DecimalFormat返回一個「?」
例如:
DecimalFormat df = new DecimalFormat("#.####");
df.format(X); // output : '?'
什麼能X
可能是什麼?
我的DecimalFormat
有時會返回'?'當試圖format()
。有沒有可能會產生這種情況的輸入?Java DecimalFormat返回一個「?」
例如:
DecimalFormat df = new DecimalFormat("#.####");
df.format(X); // output : '?'
什麼能X
可能是什麼?
這不是一個問號,它是一個U+FFFD REPLACEMENT CHARACTER
,它顯示爲?因爲它無法映射到輸出編碼:
NaN被格式化爲一個字符串,它通常具有單個字符\ uFFFD。該字符串由DecimalFormatSymbols對象確定。這是不使用前綴和後綴的唯一值。
同樣,?在無窮的表示中是一個U+221E INFINITY
字符(∞)。
Infinity被格式化爲一個字符串,該字符串通常具有單個字符\ u221E,並且應用正或負的前綴和後綴。無窮大字符串由DecimalFormatSymbols對象確定。
參見:
它會返回「?」如果X
是Float.NaN
或Float.POSITIVE_INFINITY
。看來Float.NEGATIVE_INFINITY
返回「 - ?」。
我剛剛解決了非常類似的問題。在我的情況下,我試圖將貨幣符號返回到Spring並將其顯示在Thymeleaf模板中。
public String getAmountDue() {
DecimalFormat decimalFormat = new DecimalFormat("¤0.00");
decimalFormat.setCurrency(this.currency);
String result = decimalFormat.format(amountDue);
return result;
}
因此,這實際上是返回正確格式化字符串,但在瀏覽器代替,如€99.99
我得到?99.99
- 所以貨幣符號不是顯示問號。
最後,這是我的Spring配置有問題,我加入characterEncoding
到我的配置解決:
<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
...
<property name="characterEncoding" value="UTF-8" />
</bean>
什麼是X,它是如何申報,如何界定? – 2011-04-07 16:11:24
你能給我們一個簡短但完整的例子來證明這個問題嗎? – 2011-04-07 16:13:57
我的問題應該說得更好了,但是希望回答一般性問題:「DecimalFormat會在什麼情況下返回'?當格式()'ing – tinkertime 2011-04-07 16:19:47