python cookbook 学习笔记 第三章 数字日期和时间(7) 无穷大和NaN

本文探讨了在Python中如何创建和测试无穷大(正无穷和负无穷)及非数字(NaN)的浮点数值。文章详细介绍了使用float()函数创建这些特殊值的方法,以及如何利用math.isinf()和math.isnan()函数进行检测。此外,还深入讨论了无穷大和NaN在数学运算中的行为特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 无穷大和NaN
  • 问题:
    • 创建或测试正无穷、负无穷或NaN(非数字)的浮点数。
  • 解决方案:
    • Python 并没有特殊的语法来表示这些特殊的浮点值,但是可以用 float() 来创建它们。比 如:
a = float("inf")
b = float("-inf")
c = float("nan")

print(a)  # inf
print(b)  # -inf
print(c)  # nan
  • 为了测试这些值得存在,使用 math.isinf() 和 math.isnan() 函数。比如:
import math
print(math.isinf(a))  # True
print(math.isnan(c))  # True
  • 讨论: 有一些地方需要特别注意,例如,比较和操作符相关的时候。
  • 无穷大数在执行数学计算的时候会传播,比如:
a = float("inf")
print(a + 45)  # inf
print(a*10)  # inf
print(10/a)  # 0.0
  • 但是一些未定义的操作会返回一个NaN结果。比如:
a = float("inf")
print(a/a)  # nan
b = float("-inf")
print(a + b)  # nan
  • NaN 值会再所有操作中传播,不会产生异常。比如:
c = float("nan")
print(c + 23)  # nan
  • NaN 值一个特别的地方是他们之间的比较操作总是返回 False,比如:
c = float("nan")
d = float("nan")

print(c == d)  # False
  • 由于这个原因,测试一个 NaN值唯一安全的办法就是使用 math.isnan(),也就是上面例子 中那样。
  • 有时候想改变 Python 默认行为,在返回无穷大或者 NaN 结果的操作抛出异常。fpectl 模块可以用来改变这种行为,但它在标准的 Python 构建中并没有启用,是与平台相关的, 并且针对的是。。。。(比较牛逼的人)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值