You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中Double类型除以零返回NaN而非算术异常是否正确?

Kotlin Double类型除以零返回NaN的正确性说明

你观察到的行为是符合Kotlin设计规范的正确表现,具体原因如下:

  • 核心原因是Kotlin的Double、Float等浮点类型完全遵循IEEE 754浮点运算标准,该标准为浮点运算定义了NaN(非数值)、正负无穷等特殊边界值,明确要求浮点除以零的场景不抛出异常,而是返回对应特殊值:
    • 非零正数除以0.0返回正无穷Infinity
    • 负数除以0.0返回负无穷-Infinity
    • 0.0除以0.0时返回NaN
  • 仅当用Int、Long等整数类型执行除以零操作时,才会抛出ArithmeticException异常,因为整数类型没有定义上述特殊边界值。

你可以参考如下代码验证行为:

fun main() {
    println(5.0 / 0.0) // 输出 Infinity
    println(-3.2 / 0.0) // 输出 -Infinity
    println(0.0 / 0.0) // 输出 NaN
    // 整数除以零才会抛出异常
    // println(5 / 0) // 运行抛出 ArithmeticException: / by zero
}

如果需要处理这类边界场景,可以用Kotlin内置方法判断:

  • 调用Double.isNaN()判断值是否为NaN
  • 调用Double.isInfinite()判断值是否为无穷值

Double类型除法返回NaN示例截图

内容的提问来源于stack exchange,提问作者facuhump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:36:06