Java DecimalFormat返回一个“?””

我的ѭ0有时会回归'?'当试图
format()
。是否有可以创建此方案的输入? 例如:
DecimalFormat df = new DecimalFormat("#.####");
df.format(X); // output : '?'
X
可能是什么?     
已邀请:
它不是一个问号,它是一个
U+FFFD REPLACEMENT CHARACTER
,显示为?因为它无法映射到输出编码:   NaN被格式化为字符串,通常具有单个字符 uFFFD。此字符串由DecimalFormatSymbols对象确定。这是不使用前缀和后缀的唯一值。 同样,?在无穷大的表示中是一个
U+221E INFINITY
字符(∞)。   Infinity被格式化为字符串,通常具有单个字符 u221E,其中应用了正或负前缀和后缀。无穷大字符串由DecimalFormatSymbols对象确定。 也可以看看:
DecimalFormat
javadoc     
它会回归“?”如果
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;
}
所以这实际上是返回正确格式化的String但是在浏览器中而不是,例如,
€99.99
我得到了
?99.99
- 所以没有货币符号显示问号。 最后,这是我的Spring配置的问题,我通过在我的配置中添加
characterEncoding
来解决:
<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
  ...
  <property name="characterEncoding" value="UTF-8" />
</bean>
    

要回复问题请先登录注册