• python的特殊数字类型(无穷大、无穷小等)


    float('inf') 表示正无穷

    -float('inf') 或 float('-inf') 表示负无穷

    其中,inf 均可以写成 Inf

    起步
    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(http://www.my516.com):
    raise ValueError
    return float(ss)

    sss = "inf"
    a = str2float(sss)

  • 相关阅读:
    JavaScript中严格模式"use strict";需注意的几个雷区:
    React 学习,需要注意几点
    安装了VS2012 还有Update4 我的Silverlight5安装完后 我的Silverlight4项目打不开
    SilverLight抛出 System.InvalidOperationException: 超出了2083 的最大URI
    Dictionary集合运用
    配置OpenCV开发环境心得
    调用第三方库出现的问题
    7-19 答疑课小结
    工欲善其事必先利其器(篇一)
    VMware Ubuntu Kaldi
  • 原文地址:https://www.cnblogs.com/ly570/p/11007562.html
Copyright © 2020-2023  润新知