使用'/'加长双?

时间:2012-02-06 14:14:27

标签: c double precision

我试图理解为什么在以下方式中使用带有long double的'/'会导致0.000000值,而使用double的相同代码则不会

double d = (double)total_results / (double)total_points;

给出值0.785403但

long double d = (long double)total_results / (long double)total_points;

给出值0.000000。我想为'total_results / total_points'

获取最准确的值

编辑:最后错误只是因为我使用'%f'而不是'%Lf'输出它

printf("Running on %d thread(s), results is %f.\n", NUM_THREADS, d);    

printf("Running on %d thread(s), results is %Lf.\n", NUM_THREADS, d); 

1 个答案:

答案 0 :(得分:15)

这显然只是猜测,但你如何输出结果?如果您使用错误的字段说明符printf,则打印错误的零肯定是可能的结果。使用g ++,我尝试了“%lf”,得到“-2.0000”,当我应该得到“0.75”。正确的说明符是“%Lf”,大写字母为L。