Python 表示无穷大的数
我之前只知道设置初始值0.今天偶然在Python算法书上看到这个片段,从100个随机数里面找2个最靠近的自然数(不相等):
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)
我猜测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
顺便还收获了NaN的概念,暂时不知道有什么用.
以下内容转自: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 |
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.0XXX…XXX | XXX不为0 |
| QNaN | 1.1… | 1.1 后面任意值 |
x87 FPU或SSE指令遇到SNaN数时会产生#IA异常,而遇到QNaN时不产生#IA异常(部分指令除外)。
那么既然NAN不是一个真实的数值,在程序如何判断变量是否变成了NAN呢?大部分语言中针对NAN值都有一系列的函数定义,C语言中最常见的函数如下:
_isnan(double x); //判断是否为NAN
_finite(double x); //判读是否为无穷大
Python 表示无穷大的数的更多相关文章
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
一.JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
- 【Python】Python获取命令行參数
有时候须要用同一个Python程序在不同的时间来处理不同的文件,此时假设老是要到Python程序中去改动输入.输出文件名称.就太麻烦了. 而通过Python获取命令行參数就方便多了.以下是我写得一个小 ...
- Python数据分析【炼数成金15周完整课程】
点击了解更多Python课程>>> Python数据分析[炼数成金15周完整课程] 课程简介: Python是一种面向对象.直译式计算机程序设计语言.也是一种功能强大而完善的通用型语 ...
- 007-使用python统计代码行数,空行以及注释
# 自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来 1.打开文件方法 1.1 以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符 f ...
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
- python多线程限制并发数示例
#coding: utf-8 #!/usr/bin/env python import Queue import threading import time prolock = threading.L ...
- python基础知识16---函数补充
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- python(leetcode)-1.两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...
- python摸爬滚打之day010----函数进阶
1.函数动态传参 *args : 将所有的位置参数打包成一个元组的形式. **kwargs : 将所有的关键字参数打包成一个字典的形式. 形参的接收顺序: 位置参数 > *args > ...
随机推荐
- 【DataMagic】如何在万亿级别规模的数据量上使用Spark
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文首发在云+社区,未经许可,不得转载. 作者:张国鹏 | 腾讯 运营开发工程师 一.前言 Spark作为大数据计算引擎,凭借其快速.稳定. ...
- mysql如何选择合适的数据类型1:CHAR与VARCHAR
CHAR和VARCHAR类型类似,都用来存储字符串,但它们"保存"和"检索"的方式不同.CHAR属于"固定长度"的字符串,而VARCHAR属 ...
- CARVARS 圆形进度条
先看下效果 这是两个不同进度的进度条,由于carvas用找的只是id所以下面想多个进度条必须要根据class来找到id,所以我封装了一个进度条的函数,下面的代码直接复制粘贴就可以了 <!DOCT ...
- [LeetCode] Image Smoother 图片平滑器
Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother t ...
- [SCOI2008]城堡
题目描述 在一个国家里,有n个城市(编号为0 到n-1).这些城市之间有n条双向道 路相连(编号为0 到n-1),其中编号为i的道路连接了城市i和城市ri(一条道 路可以连接一个城市和它自身),长度为 ...
- [SDOI2009]学校食堂Dining
题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
- bzoj 5297: [Cqoi2018]社交网络
Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息 (例如微博.状态.Tweet等)后,他的好友们也可以看见这条消息,并可能转 ...
- bzoj 3191: [JLOI2013]卡牌游戏
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X ...
- ●BZOJ 3676 [Apio2014]回文串
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3676 题解: 后缀数组,Manacher,二分 首先有一个结论:一个串的本质不同的回文串的个 ...
- poj 3348 Cow 凸包面积
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8122 Accepted: 3674 Description ...