3.7无穷大于NaN

问题

​ 你想创建或测试正无穷、负无穷或NaN(非数字)的浮点数。

解决方案

​ Python并没有特殊的语法来表示这些特殊的浮点值,但是可以使用float()来创建它们。比如:

a = float('inf')
b = format('-inf')
c = float('nan')
print(a)  # ->inf
print(b)  # ->-inf
print(c)  # ->nan

​ 为了测试这些值的存在,使用math.isif()和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
print(c/2)# ->nan
print(math.sqrt(c))# ->nan

​ NaN值的一个特别的地方是它们之间的比较操作总是返回False。比如:

c=float('nan')
d=float('nan')
print(c==d)  # ->False
print(c is d) # ->False

​ 由于这个原因,测试一个NaN值的唯一安全的方法就是使用math.isnan()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值