遇到问题
我的程序是先判断
fp32 t; //全局变量
运行下面一段代码
if( t < 0.01f || t > 100.0f)
t = 1.0f;
结果是
调试得到 1.#QNAN
无法出处理1.#QNAN,
分析原因应该是无效值无法比较大小。
因此我增加了一条
if( (int32)(t*1000) == 0 ){
t = 1.0f;
}
通过此方法曲线实现。之后程序运行正常
如果哪位能够分析出原因请下面评论。
特此记录
anlog
2021年8月23日
博客作者在程序中遇到一个浮点数比较的问题,当全局变量`fp32 t`的值在0.01f和100.0f之外时,试图将其设置为1.0f,但调试结果显示为1.#QNAN。分析认为这是由于浮点数的无效值无法进行大小比较。为解决这个问题,作者采用了一种曲线救国的方法,即检查`t*1000`的整数值是否为0来间接判断并修正`t`的值。这种方法成功避免了NaN的问题,使得程序运行正常。
383

被折叠的 条评论
为什么被折叠?



