首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的紧凑数字格式行为(在十进制和科学表示法之间自动切换)

Java中的紧凑数字格式行为(在十进制和科学表示法之间自动切换)
EN

Stack Overflow用户
提问于 2011-11-13 09:43:43
回答 1查看 1.8K关注 0票数 5

我正在寻找一种方法来动态格式化浮点数的标准十进制格式或科学表示法,这取决于数字的价值。

  • 对于中等震级,应将数字格式化为十进制,并抑制尾随零点。如果浮点数等于整数,则小数点也应被抑制。
  • 对于极端的震级(非常小或很大),这个数字应该用科学符号表示。另一种说法是,如果表达式中作为标准十进制表示法的字符数超过了某一阈值,则切换到科学符号。
  • 我应该控制最大数的精度,但我不希望附加尾随零来表示最小精度;所有尾随零都应该被抑制。

基本上,它应该优化的紧凑性和可读性

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产生的科学符号中去掉尾随的零。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-13 10:02:45

你看过DecimalFormat了吗?

(也可能感兴趣的是:BigDecimal#toString())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8110764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档