C:printf一个浮点值

Rom*_*dgz 61 c floating-point

我想打印一个浮点值,它在逗号后面有2位整数和6位小数.如果我只是使用printf("%f", myFloat)我得到一个截断值.

我不知道这是否总是发生在C中,或者只是因为我将C用于微控制器(确切地说是CCS),但是在引用时它告诉我%f只是:得到一个截断的浮点数.

如果我的浮动是44.556677,我打印出来"44.55",只有前两位小数.

所以问题是......我怎样才能打印我的6位数字(以及其中的6位数字,以防万一之后我或者之后有零)?

Beg*_*ner 116

你可以这样做:

printf("%.6f", myFloat);
Run Code Online (Sandbox Code Playgroud)

6表示点后的位数.

PS谢谢@caf纠正我.

  • "2"不表示小数点前的位数,它表示最小*总*字段宽度(已经大于2),所以这里什么都不做. (5认同)

das*_*ght 17

printf("%9.6f", myFloat) 指定总共9个字符的格式:点前2位,点本身和点后6位.

  • `%09.6f`也可能是一个选项. (3认同)
  • @dasblinkenlight 和 `printf("%9.6f", myFloat)` ,如果我在点之前给出 3 位数字,那么它仍然打印点之前的 3 位数字。你能解释一下为什么吗? (2认同)

roh*_*hit 7

printf("%0k.yf" float_variable_name)
Run Code Online (Sandbox Code Playgroud)

k是您要打印的字符总数。k = x + 1 + y+ 1对于点)并且float_variable_name是要打印的浮点变量。

假设您要打印小数点前的 x 位数字和小数点后的 y 位数字。现在,如果 float_variable_name 之前的位数小于 x,那么它会自动在它前面加上那么多的零。


Igo*_*bin 6

printf("%.<number>f", myFloat) //where <number> - digit after comma
Run Code Online (Sandbox Code Playgroud)

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

  • 小心点!**f**说明符必须在数字之后,因此`printf("%.numberf",myFloat)`坦克你的有用链接! (3认同)

小智 5

尝试这些来澄清浮点打印中的右对齐问题

printf(" 4|%4.1lf\n", 8.9);
printf("04|%04.1lf\n", 8.9);
Run Code Online (Sandbox Code Playgroud)

输出是

 4| 8.9
04|08.9
Run Code Online (Sandbox Code Playgroud)