加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将float转换为string并始终获取特定的字符串长度?

发布时间:2020-12-15 01:07:29 所属栏目:Java 来源:网络整理
导读:如何将float转换为String并始终获得指定长度的结果字符串? 例如,如果我有 float f = 0.023f; 我想要一个6个字符的字符串,我想得到0.0230.但是如果我想将它转换为4个字符的字符串,结果应该是0.02.此外,限制为5个字符的值-13.459应返回-13.4,并返回10个字符-1

如何将float转换为String并始终获得指定长度的结果字符串?

例如,如果我有

float f = 0.023f;

我想要一个6个字符的字符串,我想得到0.0230.但是如果我想将它转换为4个字符的字符串,结果应该是0.02.此外,限制为5个字符的值-13.459应返回-13.4,并返回10个字符-13.459000.

这就是我现在正在使用的东西,但是要做到这一点还有更漂亮的方法……

s = String.valueOf(f);
s = s.substring(0,Math.min(strLength,s.length()));
if( s.length() < strLength )
    s = String.format("%1$-" + (strLength-s.length()) + "s",s);
最佳答案
从java.util.Formatter documentaion:您可以使用g修饰符,精度字段将数字限制为特定的字符数,使用宽度字段将其填充到列宽.

String.format("%1$8.5g",1000.4213);

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

虽然精度不包括点和指数长度 – 只计算尾数中的数字.

通过保持点的额外位置并从小数部分切割额外的数字,如果字符串明显更宽,也可以解决.

String num = String.format("%1$.5g",input);
if (num.length > 6) 
    num = num.substring(0,2) + num.substring(7); //100300 => ' 1e+05'; 512.334 => ' 512.33'

数字的科学格式总是遵循严格的规则集,因此如果总是包含符号,我们就不必在字符串内搜索点以从字符串中删除分数(或者,如上所述 – 用空格字符替换为正数) .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读