OpenCL - 双精度既不是 <= 300 也不是 >= 200?C++

OpenCL - double is neither <= 300 or >= 200? C++

本文关键字:C++ gt lt 双精度 OpenCL      更新时间:2023-10-16
double test = 0.0;
.... some code
char qwe = ...
.. some code
test += qwe;
if (test >= 200 || test <= 300) {
   test = 7.0;
}
// For some reason, test seems to equal 0?

为什么(test >= 200 || test <= 300)==是假的?

这是非常奇怪的行为。

当我打印输出时,它是 0?

尽管程序中有任何未定义的行为,(test >= 200 || test <= 300) == false当且仅当test NaN。您可以通过一些数字错误(例如 0.0 / 0.0(或使用负输入调用sqrt来获取NaN(而不是数字(。

使用std::isnan(test)进行确认。