请考虑以下代码:
A1 = [9.9, 9900];
A2 = [8.8, 7.7 ; ...
8800, 7700];
formatSpec = 'X is %4.2f meters or %8.3f mm\n';
fprintf(formatSpec, A1, A2)
X is 9.90 meters or 9900.000 mm
X is 8.80 meters or 8800.000 mm
X is 7.70 meters or 7700.000 mm
我想知道4.2f
或8.3f
在这种情况下的含义是什么?这是否意味着我们应该在.
后使用多少位?
例如,通过查看代码,我觉得很难理解它们的意思,而.2
或.3
看起来有点清晰,第一个数字4
和{{1}变得难以解释,如果它与尾数和指数有关,那么为什么我们需要呢?
请帮我澄清一下这些事情
答案 0 :(得分:1)
第一个数字表示打印时将占用的字符空格总数(包括分隔.
)。第二个 - 正如您所指出的 - 代表小数位数
例如,如果您使用1.2
打印8.3f
,则在数字前面会有三个空格:
1.200
12345678 characters total
如果你使用5.2f
,你的输出就是。
1.20
12345 characters total
我添加了第二行来说明字符总数(包括空格)。它不是原始输出的一部分
修改强>
在您的示例中,使用8.3f
1.2
并不是很有意义。但是,如果您想将大量列数据写入一个可以被其他程序轻松读取的文件,这可能会更有用(因为格式可能是已知的)。例如。考虑两列%8.3f%8.3f
(注意浮点数格式化器之间不需要空格)。这可以给你一个像这样的输出:
1.200 34.564
8503.000 101.008
......等等。这里,领先的空白有助于。在这种情况下,当数字高于9999.999
时,它将失败。
编辑2
在Matlab中,如果指定的总字符数小于小数点前的位数(或根本没有),则只打印整个数字。例如。使用%2.3f
会给你
1.200
没有前导空格。如果你只关心打印的小数,你也可以使用%.3f
再次导致
1.200