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

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容