将值为0.0f的浮点数转换为布尔值是否安全?

dan*_*jar 2 c++ floating-point casting boolean floating-point-precision

我知道由于精度错误,float应检查一个varibale,使其等于一个总是带有一定容差的值.但是,如果我手动将float变量设置为是0.0f什么情况呢?

例如,有一个返回距离的函数.

float distance()
{
    float value;
    if(/* ... */)
    {
        // ...
        return value;
    }
    else return 0.0f;
}
Run Code Online (Sandbox Code Playgroud)

我可以安全地将结果转换为bool吗?

if(distance())
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 10

当你写:

if(distance())
Run Code Online (Sandbox Code Playgroud)

你正在检查浮子是否为零.

你的代码相当于

if(distance() != 0)
Run Code Online (Sandbox Code Playgroud)

这样做非常安全,只有您可以确定它是否具有您需要的含义.