《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN
无穷大与 NaN
问题
你想创建或测试正无穷、负无穷或 NaN(非数字) 的浮点数。
解法
Python 并没有特殊的语法来表示这些特殊的浮点值,但是可以使用 float() 来创建它们。比如:
>>> a = float('inf')
>>> b = float('-inf')
>>> c = float('nan')
>>> a
inf
>>> b
-inf
>>> c
nan
>>>
为了测试这些值的存在,使用 math.isinf() 和 math.isnan() 函数。比如:
>>> math.isinf(a)
True
>>> math.isnan(c)
True
>>>
讨论
想了解更多这些特殊浮点值的信息,可以参考 IEEE 754 规范。然而,也有一些地方需要你特别注意,特别是跟比较和操作符相关的时候。
无穷大数在执行数学计算的时候会传播,比如:
>>> a = float('inf')
>>> a + 45
inf
>>> a * 10
inf
>>> 10 / a
0.0
>>>
但是有些操作时未定义的并会返回一个 NaN 结果。比如:
>>> a = float('inf')
>>> a/a
nan
>>> b = float('-inf')
>>> a + b
nan
>>>
NaN 值会在所有操作中传播,而不会产生异常。比如:
>>> c = float('nan')
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan
>>>
NaN 值的一个特别的地方时它们之间的比较操作总是返回 False。比如:
>>> c = float('nan')
>>> d = float('nan')
>>> c == d
False
>>> c is d
False
>>>
由于这个原因,测试一个 NaN 值得唯一安全的方法就是使用 math.isnan() ,也就是上面演示的那样。
有时候程序员想改变 Python 默认行为,在返回无穷大或 NaN 结果的操作中抛出异常。 fpectl 模块可以用来改变这种行为,但是它在标准的 Python 构建中并没有被
启用,它是平台相关的,并且针对的是专家级程序员。
《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN相关推荐
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python cookbook》笔记一
<Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...
- 《Python Cookbook 3rd》笔记(5.21):序列化 Python 对象
序列化 Python 对象 问题 你需要将一个 Python 对象序列化为一个字节流,以便将它保存到一个文件.存储到数据库或者通过网络传输它. 解法 对于序列化最普遍的做法就是使用 pickle 模块 ...
最新文章
- torch.nn.softmax()
- thinkphp5 图片压缩旋转_PPT图片超多,如何让排版更精致?
- 盘点那些世间顶级直男hhhhhh | 今日最佳
- 常用开发环境搭建配置教程(OneStall)
- Pandas入门2(DataFunctions+Maps+groupby+sort_values)
- 简单几招优化你的Go程序
- MTK驱动(46)---- Android CPU频率设置(MTK平台)
- Matlab Tricks(三)—— subplot 的组织
- php 循环 post,如何在php中使用jQuery递归调用POST循环请求
- Matlab学习:读取excel中数据
- php网页qq客服代码,qq客服代码,网页QQ在线客服代码
- PID控制算法原理学习
- python sklearn包中的主成分分析_九、Sklearn主成分分析
- 北航计算机博士后,北京航空航天大学博士后待遇
- 如何在win10下安装Docker
- CI框架去掉index.php以及解决No input file specified问题
- Linux文件许可权764意味着,chmod 777意味着什么
- js验证组织机构代码
- 浅谈2019互联网新技术
- 【Gated Context Aggregation Network for Image Dehazing and Deraining用于图像去雾和去雨的门控上下文聚合网络】,个人笔记,勿喷
热门文章
- 获得系统中某个进程的cpu使用率
- 表格数字乘以百分比怎么算_EXCEL记住这两个快捷键,1秒种设好数字格式
- python网络爬虫_Python爬虫实战之网络小说
- arcgis报错常用解决方法
- 【转】解密Qt安装目录的结构
- 【转】肺小结节就诊指南:4种CT的区别及如何选择?
- Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)
- 第十一节:WebApi的版本管理的几种方式
- easyexcel将对象处理为多列,自增序列
- REVERSE-PRACTICE-BUUCTF-30