紧凑显示java,Java中的紧凑数字格式化行为(自动在十进制和科学记数法之间切换)...

我正在寻找一种以标准十进制格式或科学计数法动态格式化浮点数的方法,具体取决于数字的值.

>对于中等大小,数字应格式化为十进制,并且尾随零被抑制.如果浮点数等于整数值,则还应该抑制小数点.

>对于极端量级(非常小或非常大),数字应以科学记数法表示.或者说,如果表达式中的字符数作为标准十进制表示法超过某个阈值,请切换到科学计数法.

>我应该控制精度的最大位数,但我不希望附加尾随零来表示最小精度;应该抑制所有尾随零.

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

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位精度限制舍入导致该数字具有被剥离的尾随零)

这是我到目前为止所发现的:

> Number类的.toString()方法完成了我想要的大部分工作,除非它在可能的情况下不会上转换为整数表示,并且它不会用科学计数法表示大的积分量.另外,我不确定如何调整精度.

> String.format(…)函数的“%G”格式字符串允许我以科学计数法表示具有可调精度的数字,但不会删除尾随零.

我想知道是否已经有一些符合这些标准的库函数.我想自己写这篇文章的唯一绊脚石就是必须从%G产生的科学记数法中删除有效数字的尾随零.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值