【发布时间】:2019-04-10 17:00:04
【问题描述】:
我做了一个简单的加法函数,但是得到了错误的求和值,对不起,如果它是一个幼稚的东西。但真的很想知道为什么会这样。我想要一个替代解决方案。提前致谢!
我正在使用notepad++编写代码,并在windows命令提示符下使用gcc编译器来执行代码。
#include <stdlib.h>
#include <stdio.h>
float addit(float num1, float num2)
{
float sumit;
sumit = num1 + num2;
return sumit;
}
int main()
{
float num1, num2;
float answer = 0.000000;
printf("Enter first number: ");
scanf("%f", &num1);
printf("Enter second number: ");
scanf("%f", &num2);
answer = addit(num1, num2);
printf("The summation is: %f", answer);
return 0;
}
2345.34 和 432.666 相加的预期输出为 2778.006。 但是,执行后它显示 2778.006104。
【问题讨论】:
-
float类型通常具有 6-7 位十进制数字的精度。您正在超越这些限制并发现它不准确。有关详细信息,请参阅Is floating-point math broken?。 -
浮点数和双精度数不是 C 中的精确数字。存在舍入错误。