数据类型的探讨——数值型(Numeric)——单精度(SGL)和双精度(DBL) 01/20/2010
目前大多数高级语言(包括LabVIEW)都是按照IEEE-754标准来规定浮点数的存储格式,IEEE754标准规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储。 数值型数据的精度问题是一个在程序设计中特别要关注的问题。通常我们LabVIEW中经常使用的数值型数据有精度不同的两种,一种是单精度(SGL),另一种是双精度(DBL)。 在LabVIEW中我们将数值1.23456789输入到一个SGL控件中,可以看到它的显示结果是:1.23456788063049。 如果我们将数值1.23456789输入到一个DBL控件中,可以看到它的显示结果是:1.23456789000000。 还有一个比较有趣的现象是如果使用0做除法,这个数值显示控件会显示出Inf,类似个字符串显示器。参见下图。 该数值指示器在当输入+无穷大常数时会显示出Inf,当输入-无穷大常数时会显示-Inf。 现在我们对单精度数据做一下误差分析,分析是以DBL为真值进行,参见下图. 分析结果如下图所示 从分析结果看,误差小于1E-8.所以通常所说的单精度类型的精度为7.22有效位.双精度类型的精度为15.95有效位是可信的. 尽管从工程应用的角度来看,单精度数值类型的精度足够了,完全可以满足工程上设计的需求.但是我们还是要注意慎重使用,因为在运算次数较多时,过度使用单精度运算会导致误差累计,而LabVIEW中的许多运算都是很复杂的,比如FFT等. 现代计算机的内存足够大,可以采用DBL数据进行工程计算,只有在嵌入式系统才会仔细考虑数据量的大小所占用内存的问题. | 写着玩! 外行当然说的就是我自己,内行是指NI的那些AE,因为他们更清楚LV的内涵和机理。就LV学习和使用而言,我的确就是个外行。但是,我想通过“看热闹”使自己尽可能的接近于内行。这肯定是一个可望而又不可及的目标。 历史纪录十一月 2011 分类
All |






RSS Feed