Xav*_*ier 5 java comparison exception nan
我今天花了大约2个小时来追踪一个bug,如果将NaN与浮点数进行比较,java会抛出异常,我会发现它更快.如果我能在未来保护自己,那就太好了.任何帮助表示赞赏.
在JVM指令集参考明确禁止那些从抛出异常浮点运算的字节码,并严格规定了当NaN的是一个操作数,他们应该如何工作.如果有办法执行此操作,它将要求您在NaN上显式抛出异常或使用自定义编译器为您插入这些检查.
一个可能有用的选项是编写这样的函数:
public static float check(float value) {
if (Float.isNaN(value))
throw new ArithmeticException("NaN");
return value;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以编写此效果的代码:
float f = check(myOtherFloat / yetAnotherFloat);
Run Code Online (Sandbox Code Playgroud)
然后这将进行计算并抛出错误.理想情况下,使用简短的函数名称,它不会太突兀.
w ^