Double 上的格式说明符

Format specifier on Double

我在 Stringinit(format: String, _ arguments: CVarArgType…) 上做了一些试验,一切都按预期进行,直到我尝试这样做:

String(format:"%3f", 32.6)

哪个 returned :

32.600000

我不明白为什么它不符合我想要的宽度。

根据我对格式说明符的了解(我不太了解它们)你可以这样指定:

%x.y

其中 x 是 returned 数字的宽度(没有最终的点),y 是精度(点后的位数)。

例如:

String(format: "%3.2", 2.1)

应该return:

2.10

如果 x 大于所有数字,它会在字符串前加上空格。

哦。好的,我刚刚明白了。我只回答我自己的问题。

似乎当你没有给你的格式说明符一个精度(点后面的部分)时,它会打印一个默认的位数(在我的例子中是 6 位数)。

我为格式说明符提供的宽度小于数字表示形式及其数字(默认精度为 6 位数字),它只是打印了所有数字的数字。如果我使用 %10f 它会打印带有前缀空格的数字。