lamda,用于在函数中传递变量时检查nan值

9o685dep  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(408)

有没有lambda表达式可以用来替换 NaN 价值 0 或者 -1 在传递给函数时?
我知道我可以为你开一张支票 NaN 这样地:

if (Double.isNaN(variable_name))
{
        // make it 0 or -1
}

但我想用lambda表达式

function_to_called("variable_string", variable_double); // have a check if variable double is NaN
zwghvu4y

zwghvu4y1#

没有内置方法,因为在浮点运算中 NaN 常量表示未定义或不可表示的事物。这与特定值(如0或-1)不同。看到这个问题了吗 NaN 是。
您应该自己用自己的方法编写正确的逻辑来处理它,就像您已经用 if 声明。

qacovj5a

qacovj5a2#

你可以用一个三元组 ... ? ... : ... 而不是你的 if 检查并使其成为 lambda :

Function<Double, Double> deNan = n -> Double.isNaN(n) ? -1 : n;

然而,虽然这是好的和短,这种方式你将不得不打电话 applyFunction 而不是直接调用函数,即 function_to_called("variable_string", deNan.apply(variable_double)); . 因此,您可以将其定义为常规方法,而不是lambda,这样就可以将其用作 deNan(variable_double) .
另外,如前所述 NaN 具有“特殊”(或不那么特殊)的值,如 0 或者 -1 可能不是个好主意。相反,最好是过滤掉 NaN 或者“恰当地”处理它们,不管在你的场景中需要什么。

相关问题