如何修复给出错误求和值的C函数

如何修复给出错误求和值的C函数,c,addition,C,Addition,我做了一个简单的加法函数,但是得到了错误的求和值,如果这是一个幼稚的东西,请原谅。但我真的想知道为什么会这样。我想要一个替代的解决方案。提前谢谢 我使用notepad++编写代码,并在windows命令提示符下使用gcc编译器执行代码 #include <stdlib.h> #include <stdio.h> float addit(float num1, float num2) { float sumit; sumit =

我做了一个简单的加法函数,但是得到了错误的求和值,如果这是一个幼稚的东西,请原谅。但我真的想知道为什么会这样。我想要一个替代的解决方案。提前谢谢

我使用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;
}


#包括
#包括
浮子加法器(浮子num1、浮子num2)
{
浮生苏米特;
sumit=num1+num2;
回归苏米特;
}
int main()
{
浮点数num1,num2;
浮动答案=0.000000;
printf(“输入第一个数字:”);
scanf(“%f”和num1);
printf(“输入第二个数字:”);
scanf(“%f”&num2);
答案=加法(num1,num2);
printf(“总和为:%f”,答案);
返回0;
}
增加2345.34和432.666的预期产出为2778.006。 但是,执行后显示2778.006104


欢迎来到这个奇妙的世界:在0到1之间,有无限多的数字。有0.1,有0.01,有0.001,依此类推。但是计算机没有无限的空间,那么我们应该如何存储数字呢?我们的解决方案是限制我们存储的数字的精度。正如其他人提到的,java的浮点数据类型只有6或7位精度(以10为基数)。因此,您不一定能保证浮点数上的数学运算结果100%准确。您只能确保结果的前6-7位数字为

float
类型的精度通常为6-7位小数。你正在超越这些限制,并发现它是不准确的。有关更多详细信息,请参阅。浮点数和双精度数在C中不是精确的数字。存在舍入错误。可能是的重复