资源文档分享区

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

Products and Environment

This section reflects the products and operating system used to create the example.

To download NI software, including the products shown below, visit ni.com/downloads.

    Software

  • LabVIEW NXG

    Operating System

  • 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位小数。
可以参照如下的方式进行转换。

Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.