我开始学习c
。今天,当我正在制作一个节目时,我发现了一个有趣的事情,我又做了一个小程序(类似于我的问题)来检查它。
#include<stdio.h>
int main(void)
{
float num1=867.0;
float num2=.6921;
printf("sum = %.4f \n",num1+num2);
return 0;
}
如果我运行上述程序,我会得到867.6921
作为答案。但如果我将.4%f
更改为%f
,则答案将更改为 sum = 867.692078
。为什么输出的变化?另外,有没有办法可以在不使用.4%f
的情况下得到答案?
答案 0 :(得分:2)
但如果我将.4%f更改为%f,则答案将更改为sum = 867.692078
printf
将结果舍入到您指定的浮点后的那么多位数,默认值为.6
。在舍入时,它使用当前floating point rounding mode,默认值是舍入到最近的。
答案 1 :(得分:0)
float
类型具有大约七位精度(可以是6-9位数)。另一种方法是使用g
代替f
。这会修复数字中精确数字的位数,而不仅仅是小数点后的数字。
printf("sum = %.7g \n",num1+num2);
这会产生输出
sum = 867.6921
并且始终为任何输入提供七位精度。数字格式如下:
0.000000E + 07
0000000
000000.0
00000.00
0000.000
000.0000
...等