C中的十六进制浮点常量

前端之家收集整理的这篇文章主要介绍了C中的十六进制浮点常量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个十六进制浮点常量,我想直接在我的C程序中声明,并避免转换.我认为必须先规范,对吗?如何规范化并声明?
// hex constant 0xDE.488631  
double val = 0xDE.488631; // Error must have exponent.
double val = 0x0.DE488631p-2;  // Pretty sure this is wrong.

解决方法

您可以使用0的指数:
float val = 0xDE.488641p0;

哪个在更正常的看法符号意味着DE.488641×20(当然在16的基础上).你的猜测是接近的 – 指数是二进制指数,而不是十六进制指数.当您想获得正数指数时,您也使用负指数.纠正你的第二个例子,你可以使用:

float val = 0x0.DE488631p8;

其中以常规数学符号表示0.DE488631×28,或等效于指数的十六进制基数,为0.DE488631×162.

我认为使用0的指数是很容易理解的,除非你有一些理由使用第二个例子中的表单.

猜你在找的C&C++相关文章