无符号长long int到long double

时间:2016-03-09 04:46:17

标签: c types overflow

在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,我无法理解为什么会发生这种情况。

是否出现下溢,或者我如何格式化这种错误?

1 个答案:

答案 0 :(得分:2)

我看到了几个错误:

  1. 第一个号码中有G。希望这只是一个错字或转录错误。

  2. long double的格式为%Lf,而不是%lf

  3. 这是指向工作示例的链接:http://ideone.com/jWRHit