Sha*_*ane 6 c precision double
我试图理解为什么在以下方式中使用带有long double的'/'会导致0.000000值,而使用double的相同代码则不会
double d = (double)total_results / (double)total_points;
Run Code Online (Sandbox Code Playgroud)
给出值0.785403但是
long double d = (long double)total_results / (long double)total_points;
Run Code Online (Sandbox Code Playgroud)
给出值0.000000.我想为'total_results/total_points'获取最准确的值
编辑:最后错误只是我使用'%f'而不是'%Lf'输出它
之前
printf("Running on %d thread(s), results is %f.\n", NUM_THREADS, d);
Run Code Online (Sandbox Code Playgroud)
后
printf("Running on %d thread(s), results is %Lf.\n", NUM_THREADS, d);
Run Code Online (Sandbox Code Playgroud)
Ern*_*ill 15
这显然只是猜测,但你如何输出结果呢?如果您使用printf错误的字段说明符,则打印错误的零肯定是可能的结果.使用g ++,我尝试了"%lf",得到"-2.0000",当我应该得到"0.75".正确的说明符是"%Lf",有一个大写字母L.