Double.toString 对于大值没有指数表示法

2024-05-08

在我的 JSF2 应用程序中,我希望显示双精度值而不使用指数表示法。是否可以?

我无法使用NumberFormat or DecimalFormat因为它将把我的数据类型更改为字符串。

我从Java文档中了解到,如果我的double值小于10^-3或大于或等于10^7,那么它以所谓的“表示”计算机科学记数法"(Ref: http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#toString() http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#toString()).

并且,在 JSF 中显示双精度值时,它会在内部将任何数据类型转换为字符串。

例如,如果我的双精度值是9999999999它显示为9.9e^9。我希望它按原样显示。 IE9999999999

但是,是否有可能覆盖 Double 的这个字符,或者是否有其他方法来解决这个问题?


对于此类问题的正确解决方案是尽可能长时间地传递内部数据类型。就在您向用户显示它的那一刻,您可以使用正确的格式对其进行格式化DecimalFormat.

因此,您必须在 JSF2 UI 中找到显示双精度数的所有位置,并在那里使用正确的格式化程序。

请注意DecimalFormat不是威胁安全的,因此您必须为每个请求创建一个新的格式化程序(至少)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Double.toString 对于大值没有指数表示法 的相关文章