Python 用C中的大(ish)数除法(当我知道它不是零时,得到一个零)

Python 用C中的大(ish)数除法(当我知道它不是零时,得到一个零),python,c,math,double,division,Python,C,Math,Double,Division,好的,我已经证明了答案是-7.98392238758e-07,在python中大约20秒,但是为什么我不能在C中得到相同的答案(我得到零) 最初我认为问题是我需要使用long-long而不是double,但我仍然得到相同的答案0 我很想知道这个恼人问题的解决方案。这个例子给出了预期的答案(在叮当声下): (与向上舍入的-7.98392238758e-07相同) 您可以使用printf中的%e格式占位符使其使用科学符号,方式与python使用的方式相同 double x = 1255060; do

好的,我已经证明了答案是-7.98392238758e-07,在python中大约20秒,但是为什么我不能在C中得到相同的答案(我得到零)

最初我认为问题是我需要使用long-long而不是double,但我仍然得到相同的答案0


我很想知道这个恼人问题的解决方案。

这个例子给出了预期的答案(在叮当声下):

(与向上舍入的-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

该示例给出了预期的答案(在叮当声下):

(与向上舍入的-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

在所有常量中加一个点:
double x=1255060.0
printf
格式字符串末尾的
\n
。在
printf
中使用
%g
格式。阅读也许您想使用OK非常感谢。出于好奇,%g与%f相比有什么作用?它只是把它转换成科学的格式吗?读吧,这是一个非常有用的读物。@Basile:没有必要在C中的常量中加一个点。在所有常量中加一个点:
double x=1255060.0
printf
格式字符串末尾的
\n
。在
printf
中使用
%g
格式。阅读也许您想使用OK非常感谢。出于好奇,%g与%f相比有什么作用?它只是把它转换成科学的格式吗?读吧,这是一个非常有用的读物。@Basile:没有必要在C中的常数上加点。我想
%g
会更好:)这取决于。在这种情况下,我想要科学记数法,所以最好明确要求它。我想
%g
会更好:)取决于。在这种情况下,我想要科学符号,所以最好明确地要求它。