LabVIEW为什么浮点数会丢失精度

简介: LabVIEW为什么浮点数会丢失精度

LabVIEW为什么浮点数会丢失精度


在编程环境中使用浮点数或双精度浮点数的时候发觉数字的值会有微小的变化。比如输入2.4的时候显示的是2.3999999999999999。为什么浮点数会出现这种不准确的情况呢?


解答: 造成浮点数不精确的主要原因有两个:


十进制数的二进制表示可能不够精确


浮点数或是双精度浮点数无法精确表示的情况并不少见。浮点数值没办法用十进制来精确表示的原因要归咎于CPU表示浮点数的方法。这样的话就可能会牺牲一些精度,有些浮点数运算也会引入误差。以上面提到的情况为例,2.4的二进制表示并非就是精确的2.4。反而最为接近的二进制表示是 2.3999999999999999。原因在于浮点数由两部分组成:指数和尾数。浮点数的值实际上是由一个特定的数学公式计算得到的。


如果想得到这个公式或是尾数的更多资料,可以参考“What is Mantissa?”文章。


所遇到的精度损失会在任何操作系统和编程环境中遇到。


注意:可以使用BinaryCoded Decimal (BCD)库来保持精度。BCD数字编码方法会把每一个十进制数字位单独编码。如果想要知道BCD的更多消息,可以参考文章“What is Binary Coded Decimal(BCD)?”


想要了解这种精度损失的更多信息可以参考IEEE/ANSI Standard 754-1985,这篇文章包括Standardfor Binary Floating Point Arithmetic。


类型失配


可能混合了浮点数和双精度浮点数类型。请确定在进行数学运算的时候所有的数据类型全部相同。


注意:float类型的变量只有7位的精度,而double类型的变量有15位的精度。

cdfa3df4f276073b6555c976612af6b6.png

编辑

添加图片注释,不超过 140 字(可选)

LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序

上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系们。

相关文章
|
6月前
|
语音技术 Python
量化模型是将浮点数运算转换为整数运算的过程
【2月更文挑战第32天】量化模型是将浮点数运算转换为整数运算的过程
66 1
|
11月前
|
C++
C++中浮点数据的精度输出控制?
C++中浮点数据的精度输出控制?
92 0
Labview的数值大小
Labview的数值大小
52 0
|
前端开发 Java
项目采坑日志——Java浮点类型数据进行加减运算出现精度丢失问题
项目采坑日志——Java浮点类型数据进行加减运算出现精度丢失问题
146 0
|
Python
一日一技:为什么浮点数在计算机中可能不准确?
一日一技:为什么浮点数在计算机中可能不准确?
86 0
|
存储 Java
java 将小数拆分为两部分+浮点型精度丢失问题
java 将小数拆分为两部分+浮点型精度丢失问题
168 0
计算机数值转换
计算机中常用的二进制、十进制、十六进制,要会互相转换,这是我们学网络最最基础的,所以一定要会哦。
计算机数值转换
|
Java API
Java使用BigDecimal(公式精确计算)+(精度丢失问题)
Java使用BigDecimal(公式精确计算)+(精度丢失问题)
382 0
Java使用BigDecimal(公式精确计算)+(精度丢失问题)
|
存储 Java
Java细节:浮点数精度丢失问题的原因
Java细节:浮点数精度丢失问题的原因
297 0
Java细节:浮点数精度丢失问题的原因
|
算法
【计组】32位浮点数的表示范围以及如何解决精度缺失
【计组】32位浮点数的表示范围以及如何解决精度缺失
500 0
【计组】32位浮点数的表示范围以及如何解决精度缺失