我做了一个简单的加法函数,但得到了错误的求和值,如果这是一个幼稚的寻找,抱歉。但真的很想知道为什么会发生这种情况。我想要一个替代解决方案。提前致谢!
我使用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。
最佳答案
欢迎来到 floating point values! 的精彩世界考虑一下:0 到 1 之间有无穷多个数字。有 0.1,有 0.01,还有 0.001,等等。但计算机没有无限的空间,那么我们该如何存储数字呢?我们的解决方案是限制我们存储的数字的精度。正如其他人提到的,java 的 float 数据类型只有 6 或 7 位精度(以 10 为基数)。因此,您无法保证 float 数学运算的结果 100% 准确。您只能确定结果的前 6-7 位数字是。
关于c - 如何修复给出错误求和值的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55617827/