微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何将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'

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

原文地址:https://www.jb51.cc/java/437393.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐