gpt4 book ai didi

java - 将 float 转换为字符串并始终获得特定长度的字符串?

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:29 25 4
gpt4 key购买 nike

如何将 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 文档:您可以使用 g 修饰符、precision 字段将数字限制为特定字符数和 width 字段,用于将其填充到列宽。

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'

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

关于java - 将 float 转换为字符串并始终获得特定长度的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43367845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com