判断两个量是否相等的时候习惯性的使用==,殊不知这样用包含了极大的风险。看个例子

 1 nominal = 1.0
 2 sum = 0.0
 3
 4 for i = 1, 10 do
 5     sum = sum + 0.1
 6 end
 7
 8 print(nominal == sum, nominal, sum)
 9
10
11
12 x = 1
13 y = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
14 z = 1.0
15
16 print(x==y, x==z, y==z, x, y, z)

猜猜看输出是什么,哪些个是true,哪些是false。运行一下

更进一步,可以知道 x - y > 0的结果是true的,应该说这个是无比让人纠结的。只是累加了10次,而且是0.1这种不是很极值的就这样了,只能喟叹了。有兴趣可以试试在C++、java中的结果。

较好的一种处理方法是,自己编写相等性判断函数,数值变量可以通过判断差值的范围来自己决定是否应该相等。这个结论应该牢记,以后要记得使用,不然bug会搞的很郁闷的。

转载于:https://www.cnblogs.com/njucslzh/archive/2012/10/28/2743911.html

数值变量值相等性的判断相关推荐

  1. python函数用法详解2(变量的作用域(全局变量、局部变量)、共享全局变量、函数返回值、函数的参数(位置参数、关键字参数、默认参数、不定长参数)、拆包、交换变量值、引用、可变和不可变类型)

    1. 变量作⽤域         变量作⽤域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量. 局部变量         定义在函数体内部的变量,即只在函数体内部⽣效. def testA(): ...

  2. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  3. js 获取表格数据(表单变量值)

    js获取表单中的指定动态变量 问题描述:for循环实现表格每行数据输入,对应每行有提交表单需要做相应处理,我们需要获得该行某列的变量值 要求:表格每一行有一个提交按钮实现前台判断操作(判断表格每行第二 ...

  4. keil debug如何在watch直接修改变量值_零基础学VBA:什么是VBA?如何编写和运行VBA代码?...

    HI,大家好,我是星光,今天咱们来继续学习VBA.在上一章咱们讲了为什么要学习VBA~VBA还值不值得学~学了还有没有用~零基础学VBA编程01:VBA还能不能学?学了还有没有用? 这一章咱们再来简单 ...

  5. 前端wxml取后台js变量值_微信小程序云开发教程WXML入门数据绑定

    同学们大家好,我是小伊同学,今天带领大家学习WXML部分一个重要的知识点,数据绑定. 简单来讲,数据绑定就是通过双重花括号将一个变量绑定到界面上. 首先,我们为什么要将变量绑定到页面上呢?因为在制作一 ...

  6. oracle定义变量sql赋值_ORACLE获取SQL绑定变量值的方法总结

    本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下这方面的知识点,方面日后查找.翻阅. 方法1:查询V$SQL V$S ...

  7. pythontk界面显示函数中的变量值_简单易学,西门子触摸屏3种修改变量值的方法!博图Wincc V14组态...

    应条友要求,今天分享3种修改触摸屏变量值的最常用方法! 全文约700字,通读4分钟! 看完本章,你将收获以下内容: 一:必会知识点:3种修改变量的方法及适用点 二:实例:3种方法修改触摸屏变量值 三: ...

  8. php使用使用外部变量的值,PHP实现函数内修改外部变量值的方法示例

    PHP实现函数内修改外部变量值的方法示例 本文实例讲述了PHP实现函数内修改外部变量值的方法.分享给大家供大家参考,具体如下: 直接上代码,如下: $a_str = 'ab'; function ch ...

  9. tensorflow 实现打印预训练的模型中的变量名和变量值

    tensorflow保存的预训练的模型包含3个文件: model_name.data-00000-of-00001 (保存网络中每个变量值,包括所有的weights.biases.gradients等 ...

最新文章

  1. moss得log文件不断增长的解决办法
  2. 动态配置页面 之 组件系统
  3. leetcode算法题--二分查找
  4. logback无法生成日志文件之谜
  5. c语言检测文件bom,C语言关联TC中BOMWindow与BOPWindow
  6. 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现
  7. 2019-02-21-算法-进化
  8. 解决element-ui的el-select组件文字超过宽度时不出现横向滚动条问题
  9. 排序算法专题-希尔排序
  10. Halcon深度学习预训练网络模型
  11. 计算机报名照片在线修图,网上报名照片处理工具
  12. matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值
  13. 【用户角色权限设计】
  14. BIM模型文件下载——某幼儿园设计方案Revit模型
  15. 如何区别计算机体系结构与计算机组成这两个概念?
  16. SpringCloud(完结)
  17. 北欧的Michael Learns To Rock的一首清澈见底的【Take Me To Your Heart】
  18. 被蚂蚁金服P8大佬怼了:找不到自己钟爱一生的事业,你再996都是白搭!
  19. 大数据之分布式协调神器:Zookeeper选举
  20. Rust 基础(七)

热门文章

  1. 巧用FineReport搭建成本管控监测系统
  2. porphet论文_Facebook 时间序列预测算法 Prophet 的研究
  3. python作用域(scope)(三分钟读懂)
  4. android 表情识别,基于Android平台的人脸表情识别系统的设计与实现
  5. resnet50代码_十余行代码完成迁移学习,百度PaddleHub实战解读
  6. android的多行文本框的值,Swift - 多行文本输入框(UITextView)
  7. 在html中定位属性怎么用,CSS元素定位的使用方法
  8. Linux哲学家进餐杀死进程,100分跪求“哲学家就餐问题”在 Linux下运行的源代码(后缀名为.c)!!!...
  9. 计算机算法设计与分析 递归实现归并排序和非递归实现归并排序
  10. 过分的谜题 模拟+思维题