在我的JSF2应用程序中,我希望显示双值而不使用指数表示法。有可能吗?
我不能使用NumberFormat
或DecimalFormat
,因为它会将我的数据类型更改为String。
我从Java文档中了解到,如果我的double值小于10 ^ -3或大于或等于10 ^ 7,则表示为所谓的" 计算机化科学记数法"(参考:http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#toString())。
而且,在JSF中显示double值时,它会在内部将任何数据类型转换为字符串。
例如,如果我的双倍值为9999999999
,则会显示为9.9e^9
。我希望它按原样显示。即9999999999
但是,有没有可能覆盖Double的这个角色,还是有其他方法可以解决这个问题?
答案 0 :(得分:3)
这类问题的正确解决方案是尽可能长时间地传递内部数据类型。就在您将其显示给用户时,您可以使用DecimalFormat
正确格式化它。
因此,您必须在JSF2 UI中找到显示双精度的所有位置,并在那里使用正确的格式化程序。
请注意,DecimalFormat
不具有威胁安全性,因此您必须为每个请求创建一个新的格式化程序(至少)。
答案 1 :(得分:1)
如果您的代码提供了double或Double,则可以使用转换器直接在页面中显示该值:
<h:outputText value="#{myBean.someDoubleValue}">
<f:convertNumber pattern="0"/>
</h:outputText>