我不敢相信我的程序中发生了什么
double den = 180*3600*10000 ;
在调试中得到了这个值-2109934592.0000000
请帮忙???
你可以尝试这个简单的代码
#include<stdio.h>
#include<math.h>
int main ( int argc , char *argv )
{
double denominator = 10000*180*3600 ;
printf("%f \n", denominator ) ;
return 0 ;
}
最佳答案
有了问题中的完整代码,我们现在可以看到这是一个整数溢出。
10000 * 180 * 3600 = 6,480,000,000.
这大于 32 位有符号整数的最大值 2,147,483,648。乘法结果溢出到-2,109,934,592,然后转换为double。
要获得正确的结果,请在进行乘法之前将其中一个数字加倍:
10000.0 * 180 * 3600
关于c - c中三个数相乘会得到错误的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26428107/