Mal*_* P. 9 c floating-point hex
我有一个十六进制浮点常量,我想在我的C程序中直接声明,并避免转换.我相信它必须首先正常化,对吗?我如何规范它并声明它?
// hex constant 0xDE.488631
double val = 0xDE.488631; // Error must have exponent.
double val = 0x0.DE488631p-2; // Pretty sure this is wrong.
Run Code Online (Sandbox Code Playgroud)
Car*_*rum 17
您可以使用以下指数0
:
float val = 0xDE.488641p0;
Run Code Online (Sandbox Code Playgroud)
其中更常见的符号表示DE.488641×2 0(当然是16号).你的猜测很接近 - 指数是二进制指数,而不是十六进制指数.当你想要一个正指数时,你也使用负指数.更正您的第二个示例,您可以使用:
float val = 0x0.DE488631p8;
Run Code Online (Sandbox Code Playgroud)
其中常规数学符号表示0.DE488631×2 8,或等效于指数的十六进制数,0.DE488631×16 2.
我认为使用指数0
更容易理解,除非你有理由使用第二个例子中的表格.
归档时间: |
|
查看次数: |
5479 次 |
最近记录: |