先看一个违反直觉的例子:

>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999# 错误被累加

再看一个更为普遍,直接影响判断逻辑的例子:

>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False

之所以会出现以上的结果,在于 Python (更准确地说是计算机硬件体系结构)对浮点数的表示,我们来看计算机(基于二进制)对十进制小数 0.10.10.1 的表示,十进制小数向二进制小数转换的方法请见 <a href=“http://blog.csdn.net/lanchunhui/article/details/50575661”, target="">十进制小数<==>二进制小数 。将十进制小数 0.10.10.1 转换为二进制时的结果为 0.0001100110011001....0.0001100110011001....0.0001100110011001....,无限循环,计算机无法展示无限的结果,只能对结果进行截断,这是浮点数精度问题的根源。

1. “==” on floats

基于以上的考虑,当我们进行浮点数的相等比较时,要特别小心,直接使用 ====== 是有问题的,一种通用的做法即是,不是检测浮点数是否相等,而是检测二者是否足够接近

>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon# 判断是否小于某一小量

2. is_integer()

is_integer() 判断一个浮点数是不是整数。

>> 1.0.is_integer()
True
>> 1.01.is_integer()
False

Python 中的浮点数相关推荐

  1. python中的浮点数用法_如何利用Python在运算后得到浮点数值的方法详解

    在python中进行两个整数相除的时候,在默认情况下都是只能够得到整数的值,而在需要进行对除所得的结果进行精确地求值时,想在运算后即得到浮点值,那么如何进行处理呢? 1.修改被除数的值为带小数点的形式 ...

  2. 如何在python中获取浮点数的十六进制值?

    浮点数的十六进制值 (Hexadecimal value of a float number) To get the hexadecimal value of a float number we us ...

  3. python减法精确度不准是什么问题,聊聊Python中的浮点数运算不准确问题

    大家好,老 Amy 来了.之前就意识到一个问题,但是最近又有朋友提出来了,所以就想着干脆记录下来,分享给大家叭~ 啥问题呢?请看题: 也就是说,需要大家计算1.1-1的值,很多朋友会说:"e ...

  4. Python中的浮点数探秘

    下面的探讨主要针对Python3,在Python2中不一定适用. 查看Python的浮点数如何在内存中存储 Python的浮点数实现原理: CPython实现有一个PyFloatObject的结构体, ...

  5. python中的浮点数类型

    一. 浮点数类型有一个特点需要注意: 在计算机中所有的数字都是采用二进制表示的 具体来说,在python中采用53位二进制来表示一个浮点数的小数部分 那么0.1在计算机中表示的二进制是一串0101这样 ...

  6. Python中关于浮点数运算的不确定尾数的解释

    一.浮点数类型 与数学中实数概念一致,带有小数点及小数的数字.浮点数取值范围和小数精度都存在限制,但常规计算可忽略. 取值范围数量级约-10308到10308,精度数量级10-16. 二.浮点数运算的 ...

  7. python中浮点数的表示方法_很好地在python中表示浮点数

    我想将浮点数表示为四舍五入到一定位数的字符串,并且从不使用指数格式. 本质上,我想显示任何浮点数并确保它看起来不错. 这个问题有几个部分: 我需要能够指定 有效位数. 有效位数 需要是可变的,不能是 ...

  8. Python中浮点数精度处理

    from: Python中浮点数精度处理 Python中,浮点数运算,经常会碰到如下情况: 出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确. 比如说: 0.1是十进制,转 ...

  9. python运算结果是浮点数_Python中的浮点数原理与运算分析 python中浮点数等于整数?为什么?...

    python的浮点数运算是不是精度有问题阿 python中浮点数的处理女生啊,平时要好好护肤,保持身材,多看书,多旅行,有自己的想法,去做自己喜欢的事,培养自信,不要把精力全部用在一个男人身上,成天胡 ...

最新文章

  1. 几条曲线构建Android表白程序
  2. 【跃迁之路】【488天】程序员高效学习方法论探索系列(实验阶段245-2018.06.08)...
  3. xxl-job使用实例
  4. juniper接口打环测试
  5. jsp中为什么在跳转500页面的时候 图片加载不出来
  6. java tomcat 监控_java程序监控tomcat实现项目宕机自动重启并发送邮件提醒
  7. Sys.WORD_SIZE Julia中的常量
  8. 探索私有云OpenStack管理选项
  9. Android基础篇1:Activity
  10. mysql建帐号数据库出现反斜线_[MySQL FAQ]系列 -- 账号密码包含反斜线时怎么办-阿里云开发者社区...
  11. 手机点餐系统概述_自助点餐、自助收银......在餐饮行业有哪些智慧化场景?
  12. 金蝶k3 使用两台服务器的优势,金蝶k3报价系统优势如何,电商企业应用尤为明显...
  13. 在Mac下如何制作win7/win10启动盘
  14. 淘宝商品评论获取评论
  15. 数据库cosc2406-2407辅导week10-quiz-Transactions and Concurrency
  16. 湖南大学计算机学硕经验分享,2021湖南大学计算机专硕备考经验分享
  17. 计算机网络五要素,网络安全五个基本要素是什么
  18. Probability Through Experiments
  19. 性的短暂而致真情永失
  20. 数据库~如何快速、准确选取候选码(候选键)?

热门文章

  1. strategy dynamic参数的使用
  2. 详解:MySQL数据库的权限管理和运维实操
  3. Spark mapPartition方法与map方法的区别
  4. Linux下mysql主从复制配置(CentOS7)
  5. Mysql集群拆分_MySQL 5.7跨集群拆分迁移
  6. ue4 时间轴是什么意思_UE4中Timeline的使用
  7. python计算组合数_python排列组合算法
  8. 一口气看完了蔡学镛的--爪哇夜未眠(第二版)
  9. PAT Basic 1011
  10. nginx + tomcat + redis 部署项目,解决session共享问题。