好的,所以我已经在大约 20 秒内证明了在 python 中答案是 -7.98392238758e-07,但为什么我在 C 中不能收到相同的答案(我得到零)。
double x = 1255060;
double y = -1571985829941;
double z = x/y;
printf("\nZ is %f", z);
最初我认为问题是我需要使用 long long 而不是 double,但我仍然收到相同的答案 0。
我很想知道这个恼人问题的解决方案。
最佳答案
该示例给出了预期的答案(在 clang 下):
Z is -0.000001
(与向上舍入的 -7.98392238758e-07 相同)
您可以在 printf
中使用 %e
格式占位符,使其使用科学记数法,就像 python 使用的一样。
double x = 1255060;
double y = -1571985829941;
double z = x/y;
printf("\nX is %f", x);
printf("\nY is %f", y);
printf("\nZ is %e", z);
输出
X is 1255060.000000
Y is -1571985829941.000000
Z is -7.983914e-07
关于python - 在 C 中除以大(多)数(得到一个零,当我知道它不为零时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25834593/