读书人

为什么最后会多个2呢?该如何处理

发布时间: 2012-02-22 19:36:55 作者: rapoo

为什么最后会多个2呢?
#include<stdio.h>
void main()
{
float x;
scanf("%6f",&x);
printf("%f\n",x);

}
我输入283.1900,为什么结果是283.190002?

[解决办法]
浮点数不是连续表示的
数据格式 符号位 底数位 指数位
单精度 float 1 23 8
双精度 double 1 52 11
扩展精度 1 64 15
[解决办法]
我也是初学,我看的书中有关于这个现象的例子和解释(虽然没有解释得十分详细)

#include <stdio.h>
int main (void)
{
float floatingVar = 331.79;
printf ("floatingVar = %f\n", floatingVar);
return 0;
}

输出:floatingVar = 331.790009

书中解释:“我们在程序中给浮点变量floatingVar赋以初值331.79,但是计算机的输出却是331.790009。实际的输出结果取决于读者所使用的计算机。这个误差是由计算机内部表示浮点数的格式引起的。”

读书人网 >C++

热点推荐