float和int相加时结果错误

Wrong addition result when adding float and int

我遇到了一个非常不寻常的问题,这可能只是来自新手 C 语言学习者的错误代码。我正在努力处理以下代码。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv) {
    float a = 1587128832.000000;
    int d = 1587128898.000000;
    float f = a + d ;
    printf("%f\n", f);
    return 0;
}

下面的代码输出 3174257664.000000 而 google says that the result should be 3174257730.

我正在尝试添加带有 intfloat/double,结果却很奇怪。

那我到底做错了什么?

我不认为该错误实际上是混合数据类型的问题,因为 C 应该将 ints 转换为 floats。

float 无法准确保存这样的数字。

即。 https://www.h-schmidt.net/FloatConverter/IEEE754.html

如果你想要准确的结果,你需要更多的内存 -> 使用 double