[英]Unsigned long long int to long double
在C编程语言中,我很难获得报告的长双精度变量的准确值。
为了计算两个无符号的long long变量的准确平均值,我觉得我需要在标准双精度上使用long 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,而我真的无法理解为什么会这样。
是否存在下溢,或者在格式化时出现某种类型的错误?
我看到几个错误:
您的第一个数字中有一个G
希望这只是打字错误或抄写错误。
long double
的格式为%Lf
,而不是%lf
。
这是一个工作示例的链接: http : //ideone.com/jWRHit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.