这是为什么??
#include <stdio.h>
void main()
{
int a;
float b;
char c;
float input;
printf("输入一个实数:");
scanf("%f",&input);
a=input;
b=input;
c=input;
printf("整数a=%d\n",a);
printf("实数b=%f\n",b);
printf("字符c=%c\n",c);
}
当我输入65.99
显示:
整数a=65
实数b=65.989998-----为什么这样????
字符c=A
我输入其他的数9.99就正常
问题点数:20、回复次数:11Top
1 楼kingfish(工作很忙,很少来csdn...)回复于 2001-12-19 15:05:32 得分 0
printf("实数b=%.2f\n",b);Top
2 楼happyforever()回复于 2001-12-19 15:10:42 得分 0
看一下内存中的存储情况吧!Top
3 楼zhaotao0982(victor)回复于 2001-12-19 15:54:14 得分 0
类型转化时发生的误差Top
4 楼blood_jz()回复于 2001-12-19 16:43:44 得分 0
精度问题,属于系统误差Top
5 楼hz129(古雨)回复于 2001-12-19 19:48:19 得分 0
精度问题,建议你看一下浮点数在机器中存储的方式,计算机组成原理中有Top
6 楼phoenix96_2000(Arcrest)回复于 2001-12-19 20:57:20 得分 5
浮点数问题了,你还会碰到很多这样的Top
7 楼liuxin4335(流镡)回复于 2001-12-20 13:55:43 得分 5
实型数据在系统中存储时,精度为8位Top
8 楼abelofcn()回复于 2001-12-20 15:08:53 得分 5
系统误差!Top
9 楼Polarislee(北极星)(无房无车,飘在北京)回复于 2001-12-20 15:10:09 得分 5
所以比较两个实数是否相等时最好用:abs(a-b)<1e-8这样的方式。Top
10 楼maoxianwang(傻蛋)回复于 2001-12-20 16:00:07 得分 0
printf("实数b=%.6f\n",b); Top
11 楼justone(风铃人)回复于 2001-12-20 16:12:46 得分 0
这是正常的啊,系统的精确度的问题,没有什么好疑问的呢Top




