首先直接上判断方法:一切判断直接将整数部分装化成二进制,如果位数相等则相减后的值是等于的,如果不相等,相减大的结果一定不等于你要比较的结果。
如66.6-60.6==6.0的情况,66.6的二进制:1000010.100110011001100110011001100110011001100110011
60.6的二进制: 111100.10011001100110011001100110011001100110011001101
6.0的二进制: 110
大家可以看到60.6的整数长度比66.6少一位,而浮点数是保存为4字节32位的,其中第一位是符号位,后面的23位用来保存尾数,尾数就是整数和小数部分组成的,于是上面的答案就出来了,整数短一位,小数保留时肯定会多一位,而整数转化成十进制计算是没有精度损耗的,但是小数却因为缺多了一位导致有精度损耗,所以66.6-60.6结果不可能等于6.0,只能是大于或者小于6.0,以此题为例子,由于60.6小数保留长所以相减的结果小于6.0. 总结:其他任何情况自行按上面的计算,第一步:直接将整数转化成二进制,看位数是否相等,再看23(整数位和小数位的总长)
其次:你输入的数最终保存的样子和取出来计算的样子并不是你看到的60.6,而是变化了,虽然你看到的你敲的是60.6。 找到一个合适的图片:
附上图片:
浮点数在计算机中的存储分为三个部分:
   1. 符号位(sign):float和double符号位均为1位,0代表正数,1代表负数
   2. 指数位(exponent):存储科学计数法中的指数部分,采用移位存储
   3. 尾数位(fraction):存储科学计数法中的尾数部分 float 的存储方式如下:

python3中浮点数相减问题(大部分时候只需要关注整数的二进制形式就行了)的更多相关文章

  1. sql语句中日期相减的操作

    select datediff(year, 开始日期,结束日期); --两日期间隔年select datediff(quarter, 开始日期,结束日期); --两日期间隔季select datedi ...

  2. js两个浮点数相减出现多位小数的bug

  3. js 浮点数加减问题

      /**  ** 加法函数,用来得到精确的加法结果  ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果.  ** 调用:accAd ...

  4. JS时间(日期)比较或相减(暂时停用)

    注:此文均来自网上,可行,只供参考 //JAVASCRIPT中 日期相减很麻烦 ,现在有现成的实现方法,拷贝过去就可以用了,方便 //调用该方法(主方法) function dateDiff(date ...

  5. 转 python3中SQLLIT编码与解码之Unicode与bytes

    #########sample########## sqlite3.OperationalError: Could not decode to UTF-8 column 'logtype' with ...

  6. js面试题--------JS中数字和字符,布尔类型相加相减问题

    JS中数字和字符相加相减问题 <html lang="en"> <head> <meta charset="utf-8" /> ...

  7. python3 datetime 时间格式相减 计算间隔

    info_rent = MysqlUtils.select_yezhu_rent() info_sale = MysqlUtils.select_yezhu_sale() now_time = dat ...

  8. C#中两个日期类型相减得到天数

    protected int GetDuration(DateTime start, DateTime finish) { return (finish - start).Days; } 直接相减得到的 ...

  9. 在ORACLE中如何将一个表中某字段值合计与另一个表的某字段值相减

    现在有两个表,A表字段AMOUNT为发票金额,B表字段REV为收款金额,两表通过字段id关联,需将A表的字段AMOUNT与B表的字段REV相减, 但是A表表示的发票可能对应多个B表的收款金额,如何将A ...

随机推荐

  1. Springboot1.5.9整合WebSocket

    一.WebSocket介绍 1.WebSocket是什么? WebSocket是协议,是HTML5开始提供的基于TCP(传输层)的一种新的网络协议, 它实现了浏览器与服务器全双工(full-duple ...

  2. Ubuntu下使用git clone 的权限问题解决方法

    问题1.sign_and_send_pubkey: signing failed: agent refused operation,执行如下语句: eval "$(ssh-agent -s) ...

  3. java while循环

    /* while 循环有一个标准格式,还有一个扩展格式 标准格式: while(条件表达式){ 循环体 } 扩展格式: 初始化语句; while(条件判断){ 循环体 步进表达式 } */ publi ...

  4. docker-ce创建gitlab-ce容器笔记

    前言 vagrant + ubuntu 16.04 设置 apt 源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim ...

  5. 属性class与:class

    1.官方的案例 我们可以传给 v-bind:class 一个对象,以动态地切换 class <div v-bind:class="{ active: isActive }"& ...

  6. window杀死端口

    获取端口的pid:netstat  -aon|findstr "8382" 杀死pid : taskkill /pid [] -t -f

  7. poj 1144 割点模板题

    题目大意: 求割点: 基本思路: tarjan算法,套板子 代码如下: #include<iostream> #include<string> #include<vect ...

  8. SpringBoot 中定时执行注解(@Scheduled、@EnableScheduling)

    项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息.Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor .TaskScheduler 接口. ...

  9. 用List和Map排序输出

    参考:java的treemap反序输出 int->string string->int java对象数组的概述 List import java.io.*; import java.uti ...

  10. PHP curl_multi_init函数

    curl_multi_init — 返回一个新cURL批处理句柄 说明 resource curl_multi_init ( void ) 允许并行地处理批处理cURL句柄. 参数 此函数没有参数. ...