long long p=2086458231 * 1.0 / 3.213*135.2312;
printf("%lld",p);
printf("%lld",2086458231 * 1.0 / 3.213*135.2312);
为什么这两种输出结果不一样啊
long long p=2086458231 * 1.0 / 3.213*135.2312;
printf("%lld",p);
printf("%lld",2086458231 * 1.0 / 3.213*135.2312);
为什么这两种输出结果不一样啊
参考GPT和自己的思路:
这两种输出结果不一样的原因是因为数据类型转换导致的。在第一种情况中,long long类型的变量p会先计算2086458231/3,然后再乘以135,最后会将结果赋给p。而在第二种情况中,整个表达式2086458231 * 1.0 / 3.213135.2312都是double类型的,最后的结果也是double类型的。由于long long类型的范围比double类型小,所以在强制类型转换时可能存在精度丢失的情况,导致输出的结果不一致。可以将第二种情况的输出语句改为printf("%lld",(long long)(2086458231 * 1.0 / 3.213135.2312));来保证输出的结果正确。