我被告知在C的printf中使用的“%a”将显示数字的十六进制格式。为了测试它,我打印出2 ^ 10的表示:
printf ("%a", pow(2.0,10));
给出了
0x1p+10
我很困惑,因为指数部分“+10”看起来更像十进制格式而不是十六进制格式。十六进制格式应为1pA
。我哪里错了?
答案 0 :(得分:4)
没错,该格式被称为double
的十六进制。
手册页说:
对于
a
转换,double
参数将转换为十六进制 风格abcdef
[...]中的符号(使用字母[-]0xh.hhhp[+-]d
) 指数由正号或负号后跟a组成 表示指数为2的十进制数。
所以它是正确的,当尾数是十六进制时,指数仍然是十进制的。