gpt4 book ai didi

java - 为什么Java除以0.0时不抛出异常?

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:51 27 4
gpt4 key购买 nike

我有代码来计算两个数字之间的百分比差异 - (oldNum - newNum)/oldNum * 100; - 其中两个数字都是 double。我预计必须添加某种检查/异常处理,以防 oldNum 为 0。但是,当我对 oldNum 和 newNum 的值都为 0.0 进行测试运行时,执行会继续进行,就好像什么也没发生一样,也没有抛出任何错误。使用 int 运行此代码肯定会导致算术被零除异常。为什么Java在涉及到double时会忽略它?

最佳答案

Java 的 floatdouble 类型,与几乎所有其他语言(以及几乎所有硬件 FP 单元)一样,实现 IEEE 754 float 学标准,要求除以零以返回特殊的“无穷大”值。抛出异常实际上会违反该标准。

整数算术(由 Java 和大多数其他语言和硬件实现为 two's complement 表示形式)是不同的,并且没有特殊的无穷大或 NaN 值,因此抛出异常是一种有用的行为。

关于java - 为什么Java除以0.0时不抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22591003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com