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

标签 c addition

我做了一个简单的加法函数,但得到了错误的求和值,如果这是一个幼稚的寻找,抱歉。但真的很想知道为什么会发生这种情况。我想要一个替代解决方案。提前致谢!

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

最佳答案

欢迎来到 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/

相关文章:

python - 超过 64 位时截断整数

c++ - 添加用户定义类型 C++

javascript - 2的补码校验和

mysql - 如何一起显示表格和总成本?

c - 为什么使用 .data 而不是在 .bss 中保留空间并在运行时初始化,用于 assembly/C 中的变量?

c - pthread 编程中的段错误

C - 使用通用函数将多个数组作为一个数组排序

javascript - JQUERY 整数和字符串加法

c - 打印消息内联汇编

C 指向 Matlab 变量的指针