我正在寻找一种方法来动态格式化浮点数的标准十进制格式或科学表示法,这取决于数字的价值。
基本上,它应该优化的紧凑性和可读性。
2.80000 -> 2.8
765.000000 -> 765
0.0073943162953 -> 0.00739432 (这种情况下,精度的限制数字为6)
0.0000073943162953 -> 7.39432E-6 (如果星等足够小,则改用科学符号--在本例中小于1E-5 )
7394316295300000 -> 7.39432E+6 (如果震级足够大,则改用科学符号--例如,当大于1E+10时)
0.0000073900000000 -> 7.39E-6 (科学表示法中的带尾零)
0.000007299998344 -> 7.3E-6 (从6位精度限制取四舍五入将使该数字具有被去除的尾随零)
到目前为止,我发现的是:
.toString()方法做了我想做的大部分事情,除了它没有在可能的情况下转换为整数表示,而且它不会用科学的符号来表示大的积分值。而且,我也不知道如何调整精度。"%G"格式字符串到String.format(...)函数允许我用可调精度的科学表示法来表示数字,但是不会去掉尾随的零。我想知道是否已经有符合这些条件的库函数了。我想,我自己写这篇文章的唯一绊脚石是从%G产生的科学符号中去掉尾随的零。
发布于 2011-11-13 10:02:45
你看过DecimalFormat了吗?
(也可能感兴趣的是:BigDecimal#toString())
https://stackoverflow.com/questions/8110764
复制相似问题