美文网首页
C++中double或float类型的比较

C++中double或float类型的比较

作者: 擎烛而走_b2ce | 来源:发表于2018-06-21 08:50 被阅读0次

C++ 中,double和float类型的变量不应该直接比较大小,在本次算例中:

  • 语句


    image.png
  • 结果:


    image.png

    从输出结果中可见,满足if语句的gridData->(nod).value中有值为30,应该满足gridData->(nod).value==valueMin的值却被判定为小于valueMin,这是C++储存小数方式的问题,小于号比较的是double类型全部小数位数大小,而我们认为两值应该相等的时候,其实C++判断的结果可能不等,为了解决这种问题,可以通过一个极小值来判断,若gridData->(nod).value小于valueMin,必有gridData->(nod).value-valueMin<0,为了满足我们的需要,应同时判断当abs(gridData->(nod).value - valueMin)>1E-10 时,是满足小于号的。说明两值的差值在量级小于-10次幂的时候认为两值相等。

  • 代码


    image.png

相关文章

  • C++中double或float类型的比较

    C++ 中,double和float类型的变量不应该直接比较大小,在本次算例中: 语句image.png 结果:i...

  • java double、float类型的比较

    在java中,针对double、float类型的运算和比较都最好不要直接进行,可以依靠BigDecimal来进行 ...

  • c++ primer 阅读 day2

    第I部分 C++ 基础 2.1 基本内置类型 float 精度float和double的精度是由尾数的位数来决定的...

  • 精度丢失

    开发中处理处理价格金额问题, 后台经常返回float、double类型, 打印或转成NSString都会有精度丢失...

  • equals() 和 == 的区别

    1.对于比较基本类型(int ,long ,float ,double)只能用==,比较的是栈中的值 2.对于St...

  • float&double二进制表示方式

    参考C语言中关于float、double、long double精度及数值范围理解 在C跟C++中,IEEE754...

  • 数据类型

    1、基本数据类型: int、float、double和char类型。 2、对象类型: 类 或 协议 所声明的指针类...

  • 第一章 数据类型

    swift包含了c++所有基本类型,Int表示整型,Double和Float表示浮点型,Bool表示布尔型,Str...

  • 了解JavaScript的Number类型

    许多的语言都有好几种不同的数字类型,比如C++,分别有int,float和double,外加各种变种long in...

  • C语言基础-数学函数库

    以下的函数 参数都是double类型,实际上函数库中还有与long double,float类型相关的函数,但都只...

网友评论

      本文标题:C++中double或float类型的比较

      本文链接:https://www.haomeiwen.com/subject/lsafyftx.html