资讯专栏INFORMATION COLUMN

python中的无穷大

lordharrd / 1771人阅读

摘要:起步中整型不用担心溢出,因为理论上可以表示无限大的整数,直到把内存挤爆。而无穷大在编程中常常需要的。比如,从一组数字中筛选出最小的数字。而这临时变量一般要初始无穷大或者去第一个元素的值。

起步

python中整型不用担心溢出,因为python理论上可以表示无限大的整数,直到把内存挤爆。而无穷大在编程中常常需要的。比如,从一组数字中筛选出最小的数字。一般使用一个临时变量用于存储最后结果,变量去逐个比较和不断地更新。而这临时变量一般要初始无穷大或者去第一个元素的值。

正无穷大与负无穷大

python中并没有特殊的语法来表示这些值,但是可以通过 float() 来创建它们:

>>> a = float("inf")
>>> b = float("-inf")
>>> a
inf
>>> b
-inf

为了测试这些值的存在,使用 math.isinf() 进行判断:

>>> import math
>>> math.isinf(a)
True
>>> math.isinf(b)
True
无穷大数在执行数学计算的时候会传播

这个就类似于数学中讲述的,无穷大加上一个常数还是无穷大,无穷大与无穷大相等:

>>> a = float("inf")
>>> a + 45
inf
>>> a * 10
inf
>>> 10 / a
0.0
>>> float("inf") == float("inf")
True

无穷大在比较中比任何一个数都要大。

正无穷与负无穷相加的结果是什么

有些操作时未定义的并会返回一个 NaN 结果:

>>> a = float("inf")
>>> a/a
nan
>>> b = float("-inf")
>>> a + b
nan
表示非数字的 NaN

nan 值在所有操作中也会传播,并且不会产生异常:

>>> c = float("nan")
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan

使用 math.isnan() 可以判断值是否是 NaN

>>> math.isnan(c)
True

nan 值的任何比较操作都是返回 False

>>> float("nan") == float("nan")
False
>>> c > 3
False
更安全的类型转换

由于无穷的存在,因此字符串装浮点数就存在的一些例外,并且这个转换过程不会抛出异常。如果程序员们想改变 python 的默认行为,可以使用 fpectl 模块,但是它在标准的Python 构建中并没有被启用,它是平台相关的,并且针对的是专家级程序员。这里提供一个比较简单的转换,就是加一个 isdigit() 判断:

def str2float(ss):
    if not ss.isdigit():
        raise ValueError
    return float(ss)

sss = "inf"
a = str2float(sss)
总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41006.html

相关文章

  • Python标准库---2、内置函数(D-E-F)

    摘要:如果对象允许,该函数将删除指定的属性。返回值为表达式求值的结果。语法错误将作为异常被报告。该函数返回值是。例如数字类型描述了浮点类型。将转换为控制的格式化表示。上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---1、内置函数(A-B-C)下一篇文章:Python标准库---3、内置函数(G-H-I-J-K) 内置函数: showImg(https:/...

    Fourierr 评论0 收藏0
  • python 算法

    摘要:归并排序的时间复杂度是下列哪个问题可以用贪心算法求解哈夫曼编码问题递归算法和递归函数主分析法求时间复杂度当这种情况意味着递归树上各层结点的和从根结点开始依次递增由于渐进表示可以去掉低次项因此得。给出一个算法要求用最小的箱子数将物品全部装入。 引言 定义:算法就是按照一定步骤解决问题的办法 属性: 正确:就是可以正确的求解问题 快速:就是时间复杂度要尽量小 有穷性:要在有限个步骤解决问...

    lentrue 评论0 收藏0
  • Making Your Python Codes More Functional

    摘要:但值得注意的是,因为迭代器中的每个值只能使用一次,就会得到同样语句不同结果的例子见上。生成器模拟考虑一个文件之中出现某个单词例如的句子个数,采用函数式的方法,显然,如下模块模块提供了大量用于操作迭代器的函数。 本篇文章是基于Joel Grus: Learning Data Science Using Functional Python视频的笔记。 常用的函数 currying 在Pyt...

    gplane 评论0 收藏0
  • 深入理解取整、取余与取模问题

    摘要:区分取余与取模取余与与取模的本质区别取余尽可能让商,进行向取整。理解链对任何一个大于的数,对其进行向取整和负无穷取整,取整方向是一致的。故取模等价于取余。 目录 1. 取整问题 1.0向取整(C语言默认的取整方案) 2.地板取整(向负无穷的方向取整) 3.天花板取整(向+无穷的方向取整) ...

    tracymac7 评论0 收藏0
  • Python数据结构

    摘要:堆栈和队列称为线性数据结构,而图形和树是非线性数据结构。在单次运行期间,可能无法遍历非线性数据结构中的所有数据项。堆栈是根据概念插入和移除的对象的容器。将元素添加到堆栈时,它被称为推送操作,而当您删除或删除元素时,它被称为弹出操作。 概述     数据结构是组织数据的方式,以便能够更好的存储和获取数据。数据结构定义数据之间的关系和对这些数据的操作方式。数据结构屏蔽了数据存储和操作的细节...

    fantix 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<