在Swift浮动的前导零

He *_*何一非 11 floating-point swift

这是一些浮动值:

5.3
23.67
0.23
Run Code Online (Sandbox Code Playgroud)

我希望他们成为

05.30
23.67
00.23
Run Code Online (Sandbox Code Playgroud)

使用String(format: "%.2f", floatVar)可以使小数点后面的2位数,但不能在它之前添加零.

我也试过这里的String(format: "%04.2f", floatVar)建议,但它只是显示相同%.2f

在Swift标准库中有没有一种干净的方法呢?

Cod*_*ent 21

如果您想要快速而肮脏的解决方案:

String(format: "%05.2f", floatChar)
Run Code Online (Sandbox Code Playgroud)

从这个文档:0意味着用前导零填充它.5是最小宽度,包括点字符.


更长的答案是某些语言环境使用逗号作为小数分隔符.如果要匹配用户的区域设置,请使用NumberFormatter:

let formatter = NumberFormatter()
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
formatter.minimumIntegerDigits = 2

formatter.string(from: NSNumber(value: floatChar))!
Run Code Online (Sandbox Code Playgroud)

  • 需要说明的是:5是表示原始数字的完整格式字符串的最小宽度,包括小数点分隔符之前的数字,小数点分隔符和小数点分隔符之后的数字。如果floatValue为3.14159265且创建字符串的方式如下:String(format:“%06.2f”,floatSample),则生成的字符串为“ 003.14”。 (2认同)