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

问题描述 投票:-1回答:1

我已经做了一个简单的加法功能,但得到错误的求和值,对不起,如果它是一个天真的东西寻找。但真的想知道为什么会这样。我想要一个替代解决方案。提前致谢!

我使用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。

Windows cmd window showing execution result as 2778.006104

c addition
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.