Swift中浮点数的前导零

14

这里是一些浮点数值:

5.3
23.67
0.23

我希望它们

05.30
23.67
00.23

使用String(format: "%.2f", floatVar)可以使小数点后保留2位,但无法在小数点前添加零。

我也尝试过String(format: "%04.2f", floatVar),如此处建议,但它只显示与%.2f相同的内容。

是否有一种简洁的方法可以在Swift标准库中完成这个操作?


尝试使用 "%*.2f"。我记得在C语言中可以这样用。 - Arc676
@Arc676 没有返回任何东西 :( - He Yifei 何一非
* 表示在 * 的位置上使用一个整数作为参数。它既不比 %5.2f 更好也不更差,而且没有解释它的作用,所以这个建议有点毫无意义。 - Pascal Cuoq
2个回答

34

如果你想要一个简单粗暴的解决方案:

String(format: "%05.2f", floatChar)
这个文档中了解,0表示用前导零填充。5是最小宽度,包括点字符。
更详细的答案是,一些语言环境使用逗号作为十进制分隔符。如果想匹配用户的语言环境,请使用NumberFormatter
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
formatter.minimumIntegerDigits = 2

formatter.string(from: NSNumber(value: floatChar))!

6
澄清一下:5是完整格式化的字符串表示原始数字的最小宽度,包括小数点之前的数字、小数点和小数点后的数字。如果 floatValue 是 3.14159265,并且使用以下方式创建字符串:String(format:"%06.2f", floatSample),则生成的字符串为 "003.14"。 - rexford

3

或者我可以尝试更强大的NumberFormatter API。

let numberFormatter = NumberFormatter()
// more settings
numberFormatter.minimumIntegerDigits = 2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接