首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中抛出的ArithmeticException

Java中抛出的ArithmeticException
EN

Stack Overflow用户
提问于 2010-01-27 20:59:49
回答 3查看 450关注 0票数 6

在Java语言中,(Number/0)抛出一个ArithmeticException,而(Number/0.0) =无穷大。这一切为什么要发生?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-27 21:01:24

因为IEEE-754浮点数有无穷大的表示,而整数没有。

换句话说,int中的每个位模式代表一个正常的整数;浮点值要复杂得多,有+/-无穷大、“非数字”(NaN)值、规格化值、次正常值等。

票数 13
EN

Stack Overflow用户

发布于 2010-01-27 21:18:01

From here

几乎所有现代处理器都支持IEEE浮点标准,该标准规定每个浮点算术运算,包括除以零,都具有明确定义的结果。该标准支持带符号的零,以及无穷大和NaN (不是数字)。有两个零,+0 (正零)和−0 (负零),这消除了除法时的任何歧义。在IEEE754算术中,当a为正时,a÷+0为正无穷大,当a为负时为负无穷大,当a=±0时为NaN。取而代之的是,当除以−0时,无穷大符号会发生变化。

整数除以零的处理方式通常与浮点数不同,因为结果没有整数表示法。一些处理器在尝试将整数除以零时会产生异常,尽管其他处理器会简单地继续并为除法生成错误的结果。结果取决于除法是如何实现的,可以是零,有时也可以是最大的整数。

票数 3
EN

Stack Overflow用户

发布于 2010-01-27 21:13:17

此外,您还可以查看JLS,它显示:

15.17.2除法运算符

另一方面,如果整数除法中除数的值为0,则抛出ArithmeticException。

浮点除法的结果由IEEE算法规范决定:如果结果不是NaN,则如果两个操作数具有相同的符号,则结果的符号为正,如果两个操作数具有不同的符号,则结果的符号为负。

非零有限值除以零会得到有符号无穷大。符号是由上述规则决定的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2146944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档