为何%a格式说明符不显示NaN的有效载荷?
%a格式化NaN/inf时丢失比特信息的问题 - 我用
%a输出拟合多项式的系数,遇到过编译器故障导致的NaN或非规格化数。%f和%d输出nan或inf很合理,但%a也这么做就很遗憾——它本可以直接展示尾数的十六进制原始比特,而这些信息对排查问题(比如过度激进优化器产生的特殊NaN)非常有用。 - 硬件原生生成的NaN值类型很少,但优化器导致的NaN可能带有独特的比特标记。既然
%a主要面向专业开发者使用,完全可以采用类似0x1.xxxxxxnan的格式,保留原始二进制指数和尾数的细节。 - 虽然手动实现十六进制打印原始浮点值不算难,但
%a的设计初衷就是将任意浮点比特模式转换成人类可读的十六进制格式,方便保存后重新加载回浮点变量,所以它在输出NaN时丢失比特信息的表现确实出乎意料。
内容的提问来源于stack exchange,提问作者Martin Brown
相关产品推荐
相关产品推荐

