我试图理解为什么以以下方式在长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);
最佳答案
显然这只是一个猜测,但是如何输出结果呢?如果您使用带有错误字段说明符的printf
,则肯定会打印出错误的零。使用g++,当我应该达到“0.75”时,我尝试了“%lf”并得到了“-2.0000”。正确的说明符是“%Lf”,大写字母L。
关于c - 使用 '/'和long double吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9161423/