printf输出

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:25:30
我写了一个小程序
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int a=123;
float f=123.45;
printf("%d,%4d,%4lu,%o,%x\n",a,a,a,a,a);
printf("%f,%5.2f,%-9.4f,%lf\n",f,f,f,f);
system("pause");
}
结果如下:
123, 123, 123,173,7b
123.449997,123.45,123.4500 ,123.449997
请按任意键继续. . .
我想问%f和%lf会输出近似值,而有位数限制的不会呢?
编译器dev-c++

错,是%f和%lf没有输出近似值,而另两个是近似值。
你要知道,float存的本身就不是精确值,也就是说你虽然输入的是123.45,但是其实真正在float里面存的其实是123.449997……可能后面还有很多位
因为计算机是二进制的不是十进制的,所以在转化小数的时候会出现误差。