我有一个十六进制浮点常量,我想直接在我的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的指数是很容易理解的,除非你有一些理由使用第二个例子中的表单.