我试图理解为什么在以下方式中使用带有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);
答案 0 :(得分:15)
这显然只是猜测,但你如何输出结果?如果您使用错误的字段说明符printf
,则打印错误的零肯定是可能的结果。使用g ++,我尝试了“%lf”,得到“-2.0000”,当我应该得到“0.75”。正确的说明符是“%Lf”,大写字母为L。