Mag*_*s W 5 java string-formatting number-formatting string-conversion
如何将a转换float为a String并始终获取指定长度的结果字符串?
例如,如果我有
float f = 0.023f;
Run Code Online (Sandbox Code Playgroud)
我想要一个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);
Run Code Online (Sandbox Code Playgroud)
从java.util.Formatter文档中:您可以使用g修饰符、precision字段将数字限制为特定的字符数,并使用字段width将其填充到列宽。
String.format("%1$8.5g", 1000.4213);\nRun Code Online (Sandbox Code Playgroud)\n\nhttps://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
\n\n虽然precision不包括点和指数长度 \xe2\x80\x93 ,但仅计算尾数中的数字。
如果字符串明显更宽,通过保留点的额外位置并从小数部分中删除额外的数字也可以解决。
\n\nString num = String.format("%1$ .5g", input);\nif (num.length > 6) \n num = num.substring(0, 2) + num.substring(7); //100300 => \' 1e+05\'; 512.334 => \' 512.33\'\nRun Code Online (Sandbox Code Playgroud)\n\n数字的科学格式始终遵循严格的规则集,因此如果始终包含符号(或者像上面的情况一样,将 \xe2\x80\x93 替换为正数的空格字符)。
\n