目前大多数高级语言(包括LabVIEW)都是按照IEEE-754标准来规定浮点数的存储格式,IEEE754标准规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储。

     
数值型数据的精度问题是一个在程序设计中特别要关注的问题。通常我们LabVIEW中经常使用的数值型数据有精度不同的两种,一种是单精度(SGL),另一种是双精度(DBL)。
      在LabVIEW中我们将数值1.23456789输入到一个SGL控件中,可以看到它的显示结果是:1.23456788063049。
Picture
      如果我们将数值1.23456789输入到一个DBL控件中,可以看到它的显示结果是:1.23456789000000。

Picture
      还有一个比较有趣的现象是如果使用0做除法,这个数值显示控件会显示出Inf,类似个字符串显示器。参见下图。

Picture
      该数值指示器在当输入+无穷大常数时会显示出Inf,当输入-无穷大常数时会显示-Inf。

      现在我们对单精度数据做一下误差分析,分析是以DBL为真值进行,参见下图.

Picture
      分析结果如下图所示

Picture
      从分析结果看,误差小于1E-8.所以通常所说的单精度类型的精度为7.22有效位.双精度类型的精度为15.95有效位是可信的.

      尽管从工程应用的角度来看,单精度数值类型的精度足够了,完全可以满足工程上设计的需求.但是我们还是要注意慎重使用,因为在运算次数较多时,过度使用单精度运算会导致误差累计,而LabVIEW中的许多运算都是很复杂的,比如FFT等.

      现代计算机的内存足够大,可以采用DBL数据进行工程计算,只有在嵌入式系统才会仔细考虑数据量的大小所占用内存的问题.
     
Picture
 


Comments

12/13/2010 21:09

Reply
07/11/2012 09:22

Thank you for details

Reply



Leave a Reply


Google Analytics