当我编写一个简单的程序来使用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;
}
答案 0 :(得分:1)
此问题来自计算机处理浮点值的方式。
解决此问题的一种方法是停止使用float
并将数字作为十进制数据处理。
要按原样打印数字,只需将输入作为字符串读取并打印即可。此方法非常简单,可以支持诸如1e-10000
或1.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。您应该确切地知道要显示的点后面有多少个数字。