比较函数
- 更新时间2025-08-27
- 阅读时长6分钟
比较数值
绝大多数比较函数用于测试一个输入或比较两个输入,并返回一个布尔值。该函数先将数字转换为相同的表示法后再行比较。该函数将每个输入转换为其最大化表示,以便进行准确的比较。对于带有值非法数字 (NaN)的一个或两个输入,其比较将返回不相等的结果。
不是所有数均可表示为ANSI/IEEE标准浮点数。因此,使用浮点数的比较可能会由于舍入误差导致非预期的错误。
比较字符串
比较函数依据ASCII字符码的值对字符串进行比较。“比较”函数从字符串的第0个元素开始,一次比较一个元素,直至函数发现不相等或直至一个字符串的末尾才结束比较。如前面的字符都一样,“比较”函数认为长的字符串比短的字符串大。
例如,a(其十进制值为97)比A(65)大,而后者又比数字0(48)大,数字0(48)又比空格符(32)大。LabVIEW从字符串的开始处逐个比较字符串,直至发现不相等字符时才停止比较。例如,LabVIEW在发现比e小的c前,会一直对字符串abcd和abef作比较。有字符比没有字符大。因此,字符串abcd比abc大,因为前者含有更多字符。
比较布尔值
在比较函数中,布尔值TRUE比布尔值FALSE大。
比较数组和簇
某些比较函数有两种比较数据数组或簇的模式。在“比较集合”模式下比较两个数组或簇时,函数返回的是一个布尔值。在“比较元素”模式下,函数将逐个比较数组或簇的元素,并返回所有比较结果的相应布尔值构成的数组或簇。
在“比较集合”模式下,比较字符串和比较数组的方式是一致的,即“比较”函数将字符串作为一个ASCII字符的数组来处理。
右键单击“比较”函数,从快捷菜单中选择比较模式»比较元素或比较模式»比较集合以选择函数的比较模式。不过有些“比较”函数只有“比较集合”模式,因而没有上述快捷菜单项。
数组
比较多维数组时,每个连接至函数的数组必须要有相同的维数。仅在“比较集合”模式下运行的“比较”函数比较数组时的方式与比较字符串相同,即从第一个元素开始逐一比较每个元素直至发现不相等时才停止比较。
比较元素模式
在“比较元素”模式下,“比较”函数返回与输入数组具有相同维数的一个布尔值数组。输出数组中的每一维为该维中较短的那个输入数组。在每一维内(如一行、一列或一页),函数比较每个输入数组内的相应元素值,从而在输出数组内产生相应的布尔值。
比较集合模式
在“比较集合”模式下,“比较”函数在比较一个数组内的所有元素之后返回单个布尔结果。“比较”函数在得到结果前将顺序比较各元素,其方式类似于英语单词的字母排序,即比较每个单词中的字母,出现不相等的字母时停止比较。据此,“比较”函数需执行下列步骤以得出比较的结果:
- 函数从数组开始处比较每个输入数组的相应元素。
- 如相应元素不相等,则函数结束,即返回比较结果。
- 如相应元素相等,则“比较”函数将继续处理下一对值,直至发现不相等或到达其中一个输入数组的末尾处才停止比较。
- 如两个输入数组中其他元素值都相等,但是其中一个数组在结尾处还有更多的元素,则较长的那个数组较大。例如,用“比较”函数比较[1,2,3,2]和[1,2,3]这两个数组,则前者比后者大。
| 注:判定范围并强制转换函数有三个输入端,与其他比较集合模式下的比较函数不同。比较第一组元素后,只有当上限、下限和x都相等时,函数才会继续比较其他值。否则,函数将返回第一组元素的比较结果。 |
簇
要对两个簇进行比较,它们必须要有相同的元素数目,每个元素的数据类型必须兼容,并且各个元素在簇内的顺序必须一致。例如,可以将含有DBL和字符串的一个簇与含有I32和字符串的另一个簇进行比较。
比较元素模式
在“比较元素”模式下,“比较”函数返回一个布尔元素的簇,其中每个元素对应于输入的簇元素。
比较集合模式
在“比较集合”模式下,“比较”函数在比较一个簇内的所有元素之后返回单个布尔结果。“比较”函数在得到结果前将顺序比较各元素,其方式类似于英语单词的字母排序,即比较每个单词中的字母,出现不相等的字母时停止比较。据此,“比较”函数需执行下列步骤以得出比较的结果:
- 函数从簇开始处比较每个输入簇的相应元素。
- 如相应元素不相等,则函数结束,即返回比较结果。
- 如相应元素相等,则“比较”函数将继续处理下一对值,直至发现不相等或到达其中一个输入簇的末尾处才停止比较。
- 如两个输入簇中其他元素值都相等,但是其中一个簇在结尾处还有更多的元素,则较长的那个簇较大。例如,用“比较”函数比较[1,2,3,2]和[1,2,3]这两个簇,则前者比后者大。
| 注:判定范围并强制转换函数有三个输入端,与其他比较集合模式下的比较函数不同。比较第一组元素后,只有当上限、下限和x都相等时,函数才会继续比较其他值。否则,函数将返回第一组元素的比较结果。 |
“比较集合”模式用于比较两个数据元素已排序的簇。在这种模式下,函数先比较前面的元素再比较后面的元素。例如,比较一个包含两个姓在前名字在后的字符串簇时,只有在姓匹配的情况下“比较”函数才会对名字作比较。
比较引用
LabVIEW通过等于?和不等于?这两个“比较”函数来比较VI服务器引用。这两个“比较”函数可将某一数据类型的一个数组或簇与同数据类型的标量作比较,生成一个布尔值数组或簇。比较“VI服务器”引用时,这些函数会根据两个引用是否指向同一对象而返回TRUE或FALSE,而与这两个引用是否有相同的值或功能无关。由于同一对象可以有多个引用,因此引用的整数值可以各不相同但仍指向同一对象。两个引用可能指向同一对象,但是两者的功能可以各不相同。例如,如果两个引用中的一个已经过验证而另一个没有,这两个引用的功能将不同,但它们仍然指向同一对象。
例如,一个“VI服务器”引用可能严格指向一个数字控件,而另外一个可能只是通用引用。但如果它们指向同一对象,则二者是相等的。与此类似,如两个引用同时指向同一对象,其中一个经过验证而另一个没有,则函数将返回TRUE。但是,一个本地引用和一个远程引用指向同一个LabVIEW对象时,“等于?”函数将返回FALSE。
比较变体
两个变体数据只有在其数据类型、值、属性名称、属性值完全匹配时才为相等。