资源文档分享区

LabVIEW两个双精度比较大小的问题

产品和环境

本部分要求填写创建该范例所需的产品和操作系统。

如要下载NI软件(包括以下所示产品),请访问ni.com/downloads

    软件

  • LabVIEW NXG

    操作系统

  • Windows

Description

LabVIEW两个双精度比较大小的问题
浮点数等于比较不相等Set Double Precision
这种情况,其实在每种编程平台中,都是存在的,主要原因就是在于浮点数的小数精度位上。DBL是双字节62位,精度也就是在15位。而超过15位后,是一个未知的状态。所以,如上面的框图中,1、0.002、3,这些常量,我们都可以认为是有固定小数位数的。但是在加法函数后面,其实是具有不确定的小数位数的。所以,虽然我们理解上当2.998+0.002,理论上是等于3的,实际上其值可能在内存里应该是3.000000000000000,这样的表示方式,而后面16位的小数精度位,就更加没有办法来确定是什么值了。
所以这里是不相等的情况。而要解决这个问题,只需要在加法后面,做一次强制小数位数的功能即可,如将DBL强制为3位小数,这样就会和后面的3相等了,哪怕是强制15位小数,也是可以相等的,但是如果强制16位小数,那就不行了,DBL没有办法表示16位小数。
可以参照如下的方式进行转换。

NI社区“代码范例交流区”(Example Code Exchange)中的代码范例已获得MIT许可