美文网首页
Python3 - 无穷大与NaN

Python3 - 无穷大与NaN

作者: 惑也 | 来源:发表于2018-12-20 17:28 被阅读40次

问题

创建或测试正无穷(inf)、负无穷(-inf)NaN等非数字的浮点数。

解决方案

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

print(float('-inf'))
print(float('inf'))
print(float('nan'))

-inf
inf
nan

为了测试这些值的存在,使用 math.isinf()math.isnan() 函数。比如:

import math
print(math.isinf(float('inf')))
print(math.isnan(float('nan')))

True
True

讨论

想了解更多这些特殊浮点值的信息,可以参考IEEE 754规范。 也有一些地方需要特别注意,特别是跟比较和操作符相关的时候。

无穷大数在执行数学计算的时候会传播,比如:

a = float('inf')
print(a + 40)
print(a * 10)
print(10 / a)

inf
inf
0.0

有些操作未定义,但会返回一个NaN结果。比如:

a = float('inf')
b = float('-inf')
print(a / a)
print(a + b)

nan
nan

NaN值会在所有操作中传播,而不会产生异常。比如:

c = float('nan')
print(c + 23)
print(c / 2)

nan
nan

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

c = float('nan')
d = float('nan')
print(c == d)
False

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

相关文章

  • Python3 - 无穷大与NaN

    问题 创建或测试正无穷(inf)、负无穷(-inf)或NaN等非数字的浮点数。 解决方案 Python并没有特殊的...

  • JavaScript运算符

    算术运算符 如果操作数(或者转换结果)是NaN值,算术运算的结果也是NaN。除数为0的运算结果为正无穷大或负无穷大...

  • 8.Double类源码解析

    1. double把 1.0/0.0 作为无穷大,-1.0/0.0为负无穷大,NaN是为了后面 isNaN函数做准...

  • js中如何判断是否为number类型

    isFinite 方法检测它参数的数值。如果参数是 NaN,正无穷大或者负无穷大,会返回false,其他返回 tr...

  • 9.Float类源码解析

    Float 和Double实际上一个模子印出来的,为什么这么说,往下看 1. 正无穷大,负无穷大,NaN值(非数字...

  • R语言中NA,NAN,Null,Inf的区别

    从网上找了一下,整理如下:NA:缺失数据NaN:无意义的数,比如sqrt(-2), 0/0。Inf:正无穷大-In...

  • 原生javascript的知识点(一)

    NaN: NaN这个特殊的Number与所有其他值都不相等,包括它自己NaN === NaN; // false唯...

  • JavaScript高级程序设计

    第三章 Boolean 类型 Number 类型 NaN与任何值都不相等,包括本身;NaN == NaN // f...

  • NaN 及 数值转换

    非数值,一种特殊的数值 NaN特点任何涉及NaN的操作都会返回NaN;NaN与任何值都不相等,包括自己。 针对这两...

  • pandas NaN处理

    赋值为NaN 判断是不是NaN 删除NaN 填充NaN

网友评论

      本文标题:Python3 - 无穷大与NaN

      本文链接:https://www.haomeiwen.com/subject/ttgykqtx.html