Python初始值表示也无穷大

  之前只知装变量的初始值为0。今天当形容网络路径分析的上,为了找到离任意坐标距离最近之节点,初始设置极端短距离为无根本大,然后连的失替换,直到找到最近之节点。

  刚起设置是min_dis =
999999999999,作为距离不是特意特别的呢是足以的,于是试想是无是Python提供了出无穷大的象征方法,查阅文档,果然如此:

from random import randrange 
seq = [randrange(10**10) for i in range(100)] 
dd = float("inf") 
for x in seq: 
    for y in seq: 
        if x == y: continue 
        d = abs(x-y) 
        if d < dd: 
            xx, yy, dd = x, y, d 
print (xx,yy)

上述代码的目的凡:从100只照机数里面找2独极贴近的自然数(不抵):

小心到其中的dd初始值:

dd = float("inf") 

 此处需要保证dd初始足够好,可以断定dd表示的是一个可怜充分的值,经检察,dd表示的虽为无根本大,见文档:

float also accepts the strings “nan” and “inf” with an optional prefix
“+” or “-” for Not a Number (NaN) and positive or negative infinity.

那负无穷的代表也?

>>> float('-Inf')==-float('Inf')
true

 

以下内容转自:http://blog.sina.com.cn/s/blog\_a9303fd90101d3tx.html


infinite(无穷大)数

强烈,这是跟finite数相对的。在无限大数里价值是原则性的,分为+∞(正无穷大)和-∞(负无穷大)。exponent和significand的价如下所示。

类型 exponent significand
单精度 FF 0 2128
双精度 7FF 0 21024
扩展双精度 7FFF 0x80000000_00000000 216384

 对于扩大双精度来说,由于它们的J位是显式的,必须为1值(否则是unsupported类型),因此significand的值为0x80000000_00000000。

NaN(not a number)数

使一个频过infinite,那便是一个NaN(not
a
number)数。在NaN数中,它的exponent部分为而发挥的极其可怜价值,即FF(单精度)、7FF(双精度)和7FFF(扩展双精度)。

NaN数与infinite数的区分是:infinite数的significand部分吗0值(扩展双精度之bit63个吗1)。而NaN数的significand部分不呢0值。

NaN数包括下列两看似。

① SNaN(Signaling NaN)数:SNaN数表示是一律栽比较严重的谬误值。

② QNaN(Quiet NaN)数:在一般景象下,QNaN数是可领之。

SNaN和QNaN数的编码区别在于significand部分的异,如下所示。

NaN类型 significand 备注
SNaN 1.0XXXXXX XXX不为0
QNaN 1.1… 1.1 后面任意值 

 SNaN数的significand以1.0始发(并且1.0后面的各类非也0值),而QNaN数的significand是1.1开端。

x87
FPU或SSE指令遇到SNaN数时会见出#IA异常,而碰到QNaN时莫出#IA异常(部分发令除外)。

 

那么既然NAN不是一个真的数值,在次如何判断变量是否成了NAN呢?大部分言语中针对NAN值都发生相同文山会海之函数定义,C语言中极其广大的函数如下: 

   _isnan(double x);                  //判断是否为NAN 

   _finite(double x);                  //判读是否为无穷大