This question already has answers here:
Is floating point math broken?
(31个答案)
5个月前关闭。
当给定输入
(31个答案)
5个月前关闭。
当给定输入
150
时,我期望输出在数学上是正确的答案70685.7750
,但是我得到了错误的输出70685.7812
。#include<stdio.h>
int main()
{
float A,n,R;
n=3.14159;
scanf("%f",&R);
A=n*(R*R);
printf("A=%.4f\n",A);
}
最佳答案
float
和double
编号在内存中的显示不十分准确。主要原因是内存有限,而大多数非整数不是。
最好的例子是PI
。您可以根据需要指定任意多个数字,但仍为近似值。
表示数字的精度有限是以下规则的原因:
当使用floats
和double
数字时,不要检查是否相等(m == n
),而是要检查它们之间的差异是否小于某个错误((m-n) < e
)
请注意,正如评论中提到的那样,上述规则也不是“所有规则的母体规则”。还有其他规则。
为了使应用程序正常工作,必须针对每种特定情况进行仔细的分析。
(感谢@EricPostpischil的提醒)
10-08 17:15