为什么这段代码没有抛出ArithmeticException
?看一看:
public class NewClass {
public static void main(String[] args) {
// TODO code application logic here
double tab[] = {1.2, 3.4, 0.0, 5.6};
try {
for (int i = 0; i < tab.length; i++) {
tab[i] = 1.0 / tab[i];
}
} catch (ArithmeticException ae) {
System.out.println("ArithmeticException occured!");
}
}
}
我不知道!
您为什么不能自己检查一下并抛出异常(如果您要的话)。
try {
for (int i = 0; i < tab.length; i++) {
tab[i] = 1.0 / tab[i];
if (tab[i] == Double.POSITIVE_INFINITY ||
tab[i] == Double.NEGATIVE_INFINITY)
throw new ArithmeticException();
}
} catch (ArithmeticException ae) {
System.out.println("ArithmeticException occured!");
}
为什么这段代码不抛出?看一看: 我不知道!
为什么结果是: =NaN =无穷大 我知道或除法有一点不同。我对得到的NaN非常满意,因为当某物除以零时,结果并不是定义的。但是为什么他们定义大于零除以零的结果是不独立呢?这和他们用来执行浮点除法的方法有关系吗?
我在做一个Android计算器,除以零得到9.223372e+18。为什么不显示NaN或Crash?我认为它的结果是9.223372e+18,因为这是可能的最大的double值,因为我使用了double数据类型除以零。既然这会让用户感到困惑,我该如何绕过这个问题呢? 嗨,伙计们,谢谢你们的回复。我很感激。我在下面发布了我的代码。
问题内容: 我以为应该使用十进制数字执行无限精度算术的答案。 考虑以下代码段: 我希望通过,但实际上执行程序甚至没有到达那里:引发原因! 事实证明,此行为已在API中明确记录: 在的情况下,精确商可具有无限长的十进制扩展数;例如,1除以3。如果商具有不间断的十进制扩展数,并且指定了该操作以返回精确的结果,则抛出an 。否则,将返回除法的精确结果,就像其他操作一样。 进一步浏览API,人们发现实际上
问题内容: 为什么下面的Java代码 打印’Infinity’且未定义。这在数学上不是错吗? 问题答案: 在数学中,有许多支持算术的不同结构。最突出的数字(例如自然数,整数和实数)不包括无穷大。在那些系统中,不支持除以零。 其他系统的确包含至少一个无穷大。参见,例如,真实的投影线。它确实允许被零除。 只有一种方法可以知道在特定系统中数学定义或未定义的内容-研究该系统。 类似地,操作是可交换的(a
问题内容: 谁能帮我找到执行的地方?我似乎找不到问题。 startTime变量是全局变量。 编辑:timeinSecs = 0如何?我似乎无法让调试器为BlackBerry JDE工作,所以有人将不得不帮助我:( timeTaken应该是从按下启动按钮的点到按下停止按钮的点所花费的时间,以毫秒为单位。 所有其他变量也是全局的 问题答案: 异常具有类型,这允许您查找类型并快速对问题进行分类。从文档中