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

时间:2017-04-12 11:06:46

标签: java string-formatting number-formatting string-conversion

如何将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);

1 个答案:

答案 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'

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