在C编程语言中,我无法获得针对长双变量报告的准确值。
为了计算两个无符号长long变量的准确平均值,我觉得我需要使用long double over standard double,因为标准double只处理52个有效位,而unsigned long long是64位。
以下是我遇到的问题的示例:
unsigned long long int x = 0x00000000FE5F06AC;
unsigned long long int y = 0x000FFFFFFFFFFFFF;
long double z = (x+y)/2.0;
printf("z = %lf", z);
这样的代码示例将始终为z打印0.0000,我无法理解为什么会发生这种情况。
是否出现下溢,或者我如何格式化这种错误?
答案 0 :(得分:2)
我看到了几个错误:
第一个号码中有G
。希望这只是一个错字或转录错误。
long double
的格式为%Lf
,而不是%lf
。
这是指向工作示例的链接:http://ideone.com/jWRHit