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