之前只知道设置变量的初始值为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);                  //判读是否为无穷大

Python初始值表示为无穷大的更多相关文章

  1. python字典设置初始值setdefault()与get()

    L = ['you','me','you','me','you','me','you'] D = {} for i in L: D[i] += 1 print(D) 执行以下代码会发生错误 Trace ...

  2. Bash 什么时候会给 HOME 赋初始值

    今天无意发现下面这个表现: $  env -i bash -c cd bash: line 0: cd: HOME not set $ env -i bash -c 'echo $HOME' 这表明了 ...

  3. Holt-Winters原理和初始值的确定

      关于模型 (来自以下PPT,从第4页开始)   关于初始值: 以下文档给出了三个模型的初始值计算的思路. 大致思路如下,建立一个p阶移动平均模型,估计出参数即为初始值,具体的根据三种不同的模型,有 ...

  4. 关于int,integer初始值问题

  5. C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析与解决方法

    对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一: 借鉴麒麟.NET ...

  6. Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence

    Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...

  7. malloc error:初始值设定元素不是常量

    #include <stdio.h> #include <stdlib.h> char *buf = (char *)malloc(BUFSIZ); setbuf(stdout ...

  8. “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常---解决方案

    "System.Data.SqlClient.SqlConnection"的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Fr ...

  9. Access自动编号的初始值设置及重置编号

    项目上需要在Access数据库,发现自动编号的列无法设置初始值和步长,但是可以使用SQL语句来设置它. 方法如下: ALTER TABLE tableName ALTER COLUMN ID COUN ...

随机推荐

  1. POJ 2711 Regular Words(DP + 高精度)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1711 题目大意:给定一个正整数n,产生一个3*n位长的串,要求这个串 ...

  2. 九度OJ 1108 堆栈的使用

    题目地址:http://ac.jobdu.com/problem.php?pid=1108 题目描述: 堆栈是一种基本的数据结构.堆栈具有两种基本操作方式,push 和 pop.Push一个值会将其压 ...

  3. JS脚本延时

    JS脚本延时   function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7 ...

  4. 简单的doc命令

    cd 切换目录 dir 显示目录列表 mkdir 创建目录(mkdir) rmdir 删除空目录(rmdir test) rmdir  /s 删除非空目录(rmdir test /s) echo 创建 ...

  5. oracle创建表(并且实现ID自增)

    CREATE TABLE STUDENT ( ID INT NOT NULL, NAME VARCHAR2(4000) NOT NULL, PRIMARY KEY(ID) ) TABLESPACE M ...

  6. FBX SDK 从2012.1 到 2013.3 变化

    ==================================================== ============================== 译文               ...

  7. Linux crontab定时执行任务 命令格式与详细例子

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...

  8. php练习2——乘法表,变量的使用

    目标:输出九九乘法表 程序: 结果: 目标: 程序variable01.html和variable01.php 结果:

  9. 使用Unidac内置连接池

    第一步: 放一个TUniconnection并设置相关属性 之后直接使用TUniconnection对象即可 跟踪unidac源码uni单元1540行中可以看到 Connect方法调用CreateIC ...

  10. Objective-C中的const ,extern,static

    一.const 1>对于const,记住关键的一点,它只是修饰右边的变量. 例如: - (void)viewDidLoad { [super viewDidLoad]; // const两种用法 ...