我试图理解为什么以以下方式在长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/

10-11 23:11
查看更多