如何将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 举报,一经查实,本站将立刻删除。