zoukankan      html  css  js  c++  java
  • 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():
    raise ValueError
    return float(ss)

    sss = "inf"
    a = str2float(sss)

  • 相关阅读:
    VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布 Inchroy's Blog 博客频道 CSDN.NET
    编写可丢弃的代码
    c++ using namespace std; 海明威 博客园
    解决MySQL server has gone away
    nginx upstream 调度策略
    (2006, 'MySQL server has gone away') 错误解决 dba007的空间 51CTO技术博客
    Linux IO模型漫谈(2) 轩脉刃 博客园
    redis源码笔记 initServer 刘浩de技术博客 博客园
    MySQLdb批量插入数据
    词库的扩充百度百科的抓取你知道这些热词吗? rabbit9898 ITeye技术网站
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11058053.html
Copyright © 2011-2022 走看看