浮动值显示不正确

时间:2015-11-01 07:54:15

标签: c floating

当我编写一个简单的程序来使用float读取和打印数字时,我遇到了一些意想不到的结果。

在我输入数字100.62的下一个程序中,我得到的结果是100.620003。该值仅显示正确的八位数。即使我尝试不同的数字,问题仍然存在。为什么是这样?有没有办法克服这个问题,而不是限制小数点。

还有一种打印数字的方法吗?即;如果我输入100.62,则应打印100.62,如果输入100.623,则应打印100.623(不是100.620000和100.623000)。

int main (void)
{
    float i;
    printf ("Enter a number : ");
    scanf ("%f", &i);
    printf ("You entered the number : %f", i)
    return 0;
}

2 个答案:

答案 0 :(得分:1)

此问题来自计算机处理浮点值的方式。

解决此问题的一种方法是停止使用float并将数字作为十进制数据处理。

要按原样打印数字,只需将输入作为字符串读取并打印即可。此方法非常简单,可以支持诸如1e-100001.00000之类的困难输入。

答案 1 :(得分:-1)

据我所知,C总是默认显示浮点数的完整数字。

如果要显示自定义小数点,则应尝试使用" .x"在f表示法之前。 X是您想要在点后显示的总数。例如:

float i;
printf ("Enter a number : ");
scanf ("%f", &i);
printf ("You entered the number : %.2f", i)
return 0;

这将在点后产生2个数字。如果输入100.62,则显示为100.62。但是,这是静态的。我的意思是,如果输入100.623,它将显示100.62,而不是100.623。您应该确切地知道要显示的点后面有多少个数字。