#include <stdio.h>
int main()
{
double i;
for(i=0;i!=10;i+=0.1)
printf("%.1lf\n",i);
return 0;
int main()
{
double i;
for(i=0;i!=10;i+=0.1)
printf("%.1lf\n",i);
return 0;
}
程序会无线循环下去......
计算机中的所有数据都用二进制表示,某些浮点数不能用二进制精确表示(就像10/3不能被十进制精确表示一样)
浮点数是采用分数+指数来表示的:
0.5=1/2
0.75=1/2+1/(2^2)
0.875=1/2+1/(2^2)+1/(2^3)
0.1=0.1 = 1/(2^4) + 1/(2^5) + 1/(2^8) + ...
所以0.1在计算机中不能精确表示,只能无限接近