【发布时间】:2023-03-28 11:25:01
【问题描述】:
当我编写一个使用浮点数读取和打印数字的简单程序时,我遇到了一些意想不到的结果。
在下面的程序中,当我输入一个数字 100.62 时,我得到的结果是 100.620003。该值最多只能正确显示八位数。即使我尝试了不同的数字,问题仍然存在。为什么是这样?除了限制小数点之外,有没有办法克服这个问题。
还有没有办法按原样打印数字? IE;如果我输入 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;
}
【问题讨论】:
-
如果您只想打印有效数字,请尝试
%g。另外:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html -
这就是浮点值在计算机上的工作方式。可以在这里找到解释:Is floating point math broken?