Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无符号长整型到长双精度_C_Types_Overflow - Fatal编程技术网

C 无符号长整型到长双精度

C 无符号长整型到长双精度,c,types,overflow,C,Types,Overflow,在C编程语言中,我很难得到长双变量的精确值 为了计算两个无符号long-long变量的精确平均值,我觉得我需要使用标准double上的long-double,因为标准double只处理52个有效位,而无符号long-long是64位 下面是我遇到的问题的一个示例: unsigned long long int x = 0x00000000FE5F06AC; unsigned long long int y = 0x000FFFFFFFFFFFFF; long double z = (x+y)/2

在C编程语言中,我很难得到长双变量的精确值

为了计算两个无符号long-long变量的精确平均值,我觉得我需要使用标准double上的long-double,因为标准double只处理52个有效位,而无符号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,我真的不明白为什么会发生这种情况


是否有下溢发生,或者在格式化时出现了某种类型的错误?

我看到了两个错误:

  • 第一个数字中有一个
    G
    。希望这只是一个打字错误或抄写错误

  • long double
    的格式是
    %Lf
    ,而不是
    %Lf


  • 这里有一个工作示例的链接:

    长双z=(x+y)/2.0-->
    长双z=x;z+=y;;z/=2注释有53个有效二进制数字。它可以表示所有的
    uint53\u t
    int54\u t
    (如果存在的话)。哇,太棒了!是的,G是一个打字错误,很好的捕捉。谢谢你在“l”和“l”中发现了我的错误,我从来不知道有什么不同