|
本帖最后由 981013 于 2014-1-21 12:54 编辑
整数与小数进行四则运算,得到的答案始终为小数
以如下一段代码为例
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int a=100,c=1;
- float b=1.1;
- printf("100+1.1=%d,100*1.1=%d\n",a+b,a*b);//错误!
- printf("100+1.1=%f,100*1.1=%f\n",a+b,a*b);//正确,但看起来不大好看,也不是最精确
- printf("100+1.1=%g,100*1.1=%g\n",a+b,a*b);//正确,也很好看
- system("pause");
- return 0;
- }
复制代码 第一个printf的输出为:100+1.1=1719664640,100*1.1=1079592550,显然都是错误的,原因是使用整型的格式控制符(%d)输出浮点型变量。
第二个printf的输出为:100+1.1=101.100000,100*1.1=110.000002,第一个完全正确,第二个存在一定的浮点舍入误差,%f默认保留6位小数。
第三个printf的输出为:100+1.1=101.1,100*1.1=110,%g是很好用的一个格式控制符,它会自动选择%f与%e(以指数形式输出浮点数,如2 e5即2*10^5)中较短的一种,并去掉末尾无效的0,且有时可以避免一些舍入误差,但注意%g也不是万能的,它只能用于浮点数的输出。
|
|