当添加浮点数和int时,错误的加法结果。

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

我遇到了一个很不寻常的问题,这可能只是一个初学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 而谷歌 说,结果应该是3174257730。.

我正试图增加一个 floatdouble 附带 int 而它却给我一个奇怪的结果。

那么我到底做错了什么?

我不认为这个错误实际上是混合数据类型的问题,因为C语言应该转换为 intfloats.

c addition
1个回答
3
投票

float是不能够完全容纳这样的数字的。enter image description here

https:/www.h-schmidt.netFloatConverterIEEE754.html

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

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