如何将float
转换为String
并始终获取指定长度的结果字符串?
例如,如果我有
float f = 0.023f;
我想要一个6个字符的字符串,我想得到0.0230
。但是如果我想将它转换为4个字符的字符串,结果应该是0.02
。此外,值-13.459
限制为5个字符应返回-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);
答案 0 :(得分:3)
来自java.util.Formatter
文档:您可以使用g
修饰符,precision
字段将数字限制为特定的字符数,使用width
字段将其填充为列宽。< / p>
String.format("%1$8.5g", 1000.4213);
https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
虽然precision
不包含点和指数长度 - 但只计算尾数中的数字。
如果字符串明显更宽,也可以通过保持点的额外位置并从小数部分切割额外的数字。
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'
数字的科学格式始终遵循严格的规则集,因此如果始终包含符号,我们就不必在字符串内搜索点以从字符串中删除分数(或者,如上所述 - 替换为空格正数的字符。)