我想打印一个浮点值,它在逗号后有 2 个整数位和 6 个小数位。如果我只使用 printf("%f", myFloat)
我会得到一个截断的值。
我不知道这是否总是在 C 中发生,或者仅仅是因为我将 C 用于微控制器(确切地说是 CCS),但在参考文献中它告诉 %f
得到了这个:截断的浮点数。
如果我的浮点数是 44.556677
,我将打印出 "44.55"
,只有前两位小数。
所以问题是......我怎样才能打印我的 6 位数字(只有其中的六个,以防万一我在那之后有零或其他东西)?
%2.6f
听起来像是正确的格式字符串。
你可以这样做:
printf("%.6f", myFloat);
6 表示小数分隔符后的位数。
printf("%9.6f", myFloat)
指定总共 9 个字符的格式:点前 2 位、点本身和点后 6 位。
%09.6f
也可能是一个选项。
printf("%9.6f", myFloat)
,如果我在点之前给出 3 位数字,那么它仍然会在点之前打印 3 位数字。你能解释一下为什么吗?
printf
a %N
中,其中 N
是一个数字,始终定义字段的 complete 输出的总体 最小 宽度。 %6s
总是至少打印 6 个字符(如果字符串更长,则更多)。较短的输出将被填充(在这种情况下,在左侧,使用 -N
在右侧填充)。 花车也不例外。 %3f
打印至少 3 个字符,因此 1.0
输出为 __1
(两个前导空格显示为 _
)其中 1.1
输出为 1.1
没有填充,它已经有 3 个字符。因此,在 %N.Mf
中,点前至少有 N-M-1
个空格字符。
printf("%0k.yf" float_variable_name)
这里 k
是您要打印的字符总数。 k = x + 1 + y
(点的 + 1
)和 float_variable_name
是您要打印的浮点变量。
假设您要在小数点前打印 x 位,在小数点后打印 y 位。现在,如果 float_variable_name 之前的位数小于 x,那么它将自动在其前面添加那么多零。
printf("%.<number>f", myFloat) //where <number> - digit after comma
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
printf("%.numberf", myFloat)
为您提供有用的链接!
尝试这些来澄清浮点打印中的右对齐问题
printf(" 4|%4.1lf\n", 8.9);
printf("04|%04.1lf\n", 8.9);
输出是
4| 8.9
04|08.9
使用 %.6f
。这将打印 6 位小数。
您需要在 printf 语句中使用 %2.6f
而不是 %f
2
没有错,但它是高度多余的(甚至不是多余的),这通常告诉我们,作者对 printf 的工作方式感到困惑。 %2.6f
表示“至少 2 个字符宽,点后有 6 个数字”。因为我们总是会看到至少 8 个字符,所以 2 太低了,在这里没有任何效果,它需要 9
或更高才能产生一些效果。请注意,这里我们不讨论数学:在 %+9.6f
中仍然不需要 9
,因为 %+.6f
始终具有至少 9 的宽度:符号、数字、点、6 位
2
不表示小数点前的位数,它表示最小 total 字段宽度(已经大于 2),所以这里它什么也不做。