Pra*_*kar 0 java math arithmetic-expressions nan
在Java中,我除以零,这显然不会产生数字.
public class tempmain {
public static void main(String args[])
{
float a=3/0;
System.out.println(a);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望输出为"NaN",但它显示以下错误:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at tempmain.main(tempmain.java:6)
Run Code Online (Sandbox Code Playgroud)
是否有任何方式(除此之外if(denominator==0)
)可以显示NaN?
由于处理数字文字3和0的方式,您将收到意外的ArithmeticException.它们被解释为整数,尽管您指定a
为浮点数.Java将解释3
为整数,3f
浮点数3.0
或3d
双精度数.除法作为整数除法执行,结果转换为浮点数.要看到另一个有趣的其他效果 - 尝试float a = 1/3
和检查a
- 你会发现它是0.0,而不是0.3333 ....正如你所料.
摆脱异常 - 改变
float a = 3/0;
Run Code Online (Sandbox Code Playgroud)
对于
float a = 3f/0;
Run Code Online (Sandbox Code Playgroud)
正如其他人在评论和答案中所指出的,如果你再打印a
,你会看到Infinity
而不是NaN
.如果你真的想在这种情况下打印NaN,你可以测试a是无限的
if (Float.isInfinite(a)) {
System.out.println("I want to print Infinity as NaN");
}
Run Code Online (Sandbox Code Playgroud)
但我建议反对它具有高度误导性 - 但我怀疑这不是你的意思
归档时间: |
|
查看次数: |
919 次 |
最近记录: |