首先直接上判断方法:一切判断直接将整数部分装化成二进制,如果位数相等则相减后的值是等于的,如果不相等,相减大的结果一定不等于你要比较的结果。
如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 的存储方式如下:

最新文章

  1. 数组为什么可以使用linq查询
  2. Select count(*)和Count(1)的区别和执行方式
  3. 一个cheat命令 == Linux命令小抄大全
  4. Ubuntu常用200条命令
  5. MVVM框架思想
  6. JUnit单元测试--小试牛刀
  7. 查看堵塞的SQL
  8. yii2.0 控制器方法 视图表单 Form表单处理
  9. 初识Selenium(三)
  10. Linux(3)用户和权限管理
  11. Java基础小知识笔记
  12. jspdf生成pdf并在页面展示
  13. Vim的合并行操作
  14. Django 学习第六天——Django模型基础第一节
  15. git使用操作
  16. JS函数介绍
  17. c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)
  18. 对软件工程Alpha迭代的反思与总结
  19. Centos 安装 GitLab 8.5.1 版本管理
  20. springboot+swagger2案例

热门文章

  1. 树的直径(BFS)
  2. javaIO流(一)--File类的基本使用
  3. BUUCTF Youngter-drive
  4. NoWarningNoError(第八组)----Krad项目报告
  5. 前端学习(二十三)DOM操作,事件(笔记)
  6. 由hbase.client.scanner.caching参数引发的血案(转)
  7. C# IOC DI 学习
  8. jvm主要组成部分及其作用
  9. ECUST_Algorithm_2019_1
  10. python 常用技巧 — 字典 (dictionary)