注册登陆后可查看附件和大图,以及购买相关内容
您需要 登录 才可以下载或查看,没有账号?注册会员
x
本帖最后由 石鑫华视觉 于 2019-5-28 10:56 编辑
LabVIEW怎么强制DBL浮点形数字强制小数点位数 LabVIEW编程时,DBL数据类型约15位精度,SGL数据类型约6位精度。在某些情况下,我们可能要对DBL、SGL等类型的浮点数强制多少位小数点。特别是涉及到货币方面的数据时,如含税价格、税额之类的,这些在我们日常应用,通常都只需要2位小数点,即只做到货币的分单位即可。例如开发票时,我们看到的金额、税额、总价,都是只保留2位小数的。而如果不强制小数位,在某些情况下计算时,没有强制小数位的和强制小数位的计算结果是有差异的,这里主要是小数位的四舍五入过程中引起的。那么我们LabVIEW开发时,如何来对浮点数强制小数位呢?
不强制数据类型时的计算差异
不强制数据类型时的计算差异 税额下的一栏,是DBL转换为字符串并保留2位小数后的结果,这时其求和后应该是232.67。但是总税额计算的值是232.68。这里就是造成的差异。总税额计算是,用下面的探针中数组值先求各,再转换成字符串保留2位小数后的值,这时其值就是232.68,而数组先强制2位小数点后,求和则应该是232.67。所以这里,为了与显示的字符串数值求和结果一致,我们需要对探针处的DBL数组强制指定2位小数,然后再求和。
DBL数组强制小数点位数的一种方法
DBL数组强制小数点位数的一种方法 在这里,我们针对的是DBL数组,当然DBL数字、SGL数组、SGL数字也是可以这样操作的,也可以做成多态VI,这里就不演示了。实现方法是数组/数字先乘以10的多少次方,多少次方则代表了小数位数,如2次方,则表示2位小数,则对原始数组乘以100,即10^2。然后再强制转换为整数,这里使用的是I32,也可以使用I64。I16、I8之类的就不建议了,建议至少还是要用I32,当然,如果你明确的知道数值范围只有I16或I8也可以用。在这个转换为整数的过程中,则会将小数点采用四舍五入强制去掉。之后,再除以之前乘以的10的多少次方,就算把值的范围又变回去了。这时得到的数值,就是已经强制保留多少位小数点后的值。
示例下载LabVIEW2017SP1及以后版本:
|