【Python Cookbook】S03E07 处理无穷大以及NaN

问题

我们如何在 Python 中表示无穷大、负无穷以及 NaN
如果我们需要对浮点数的无穷大、负无穷以及 NaN 进行判断测试,该怎么做?

解决方案

Python 中没有特殊的语法直接表示这些特殊的浮点数值。但是我们可以通过用浮点数 float() 来创建。示例如下:

a = float('inf')
b = float('-inf')
c = float('nan')
print(a, b, c)

而检测是否出现这些值,可以通过使用 math.isinf() 函数以及 math.isnan() 函数进行判断。

a = float('inf')
b = float('-inf')
c = float('nan')

print(math.isinf(a))
print(math.isinf(b))
print(math.isnan(c))

无穷大 inf 以及 nan 会通过所有的操作进行传播,且不会引发任何异常。

a = float('inf')
print(a + 45)			# 输出为:inf
print(10 / a)			# 输出为:0.0
c = float('nan')
print(c + 25)			# 输出为:nan
print(c * 25)			# 输出为:nan

讨论

有关 nan,一个很有意思的点在于,其做相等比较时,从不会被判定为相等,比如:

c = float('nan')
d = float('nan')
print(c == d)			# 输出为 False

而正是因为这样,唯一安全检测 NaN 的方法就是使用 math.isnan() 函数。有时候,高级程序员希望能够在出现无穷大或者 NaN 时可以修改 Python 的行为,让它能够抛出异常值。fpectl 模块可以用来调整这个行为,但是在标准的 Python 中并没有开启这个功能,且模块需要与平台高度相关结合,只针对专家级的程序员使用。

相关推荐

  1. 【Python Cookbook】S03E07 处理无穷大以及NaN

    2024-07-17 21:14:02       19 阅读
  2. Go语言学习06~07 错误处理和包管理

    2024-07-17 21:14:02       39 阅读
  3. <span style='color:red;'>07</span>

    07

    2024-07-17 21:14:02      44 阅读
  4. 【2024.01.02】刷算法07

    2024-07-17 21:14:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 21:14:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 21:14:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 21:14:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 21:14:02       69 阅读

热门阅读

  1. 构建新纪元:Gradle中Kotlin插件的配置全指南

    2024-07-17 21:14:02       23 阅读
  2. 软设之命令模式

    2024-07-17 21:14:02       21 阅读
  3. Linux系统中调试蓝牙的常用命令

    2024-07-17 21:14:02       19 阅读
  4. C++中调用Pytorch模型

    2024-07-17 21:14:02       18 阅读
  5. 若依自定义文件上传下载

    2024-07-17 21:14:02       17 阅读
  6. 蓝牙芯片智能秤解决方案

    2024-07-17 21:14:02       19 阅读
  7. 深度解析:《聚类算法研究》综述论文精粹

    2024-07-17 21:14:02       20 阅读
  8. 全网 最强 最全 Linux 命令总结

    2024-07-17 21:14:02       16 阅读