我遇到了一个很不寻常的问题,这可能只是一个初学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。.
我正试图增加一个 float
double
附带 int
而它却给我一个奇怪的结果。
那么我到底做错了什么?
我不认为这个错误实际上是混合数据类型的问题,因为C语言应该转换为 int
至 float
s.
即 https:/www.h-schmidt.netFloatConverterIEEE754.html
如果你想要精确的结果,你需要更多的内存 -> 使用 double
.