Home
Support
Write to Spreadsheet File.vi 和 Read from Spreadsheet File.vi 用来读写时,有精度错误
Write to Spreadsheet File.vi 和 Read from Spreadsheet File.vi 用来读写时,有精度错误
主要软件: LabVIEW Development Systems>>Full Development System
主要软件版本: 6.1
主要软件修正版本:
次要软件: N/A
问题: 我使用
Get Date/Time in Seconds 函数来得到时间用来标注我的数据,我使用
Write to Spreadsheet File.vi 来储存我的数据。我注意到我用以标注时间的数据没有正常工作,当我打开保存数据的Excel时,我的时间数据都是同一个数值,或者是一个不正确的值。为什么会出现这种情况?
解答: Write to Spreadsheet File.vi 截断了你的数据,因为两端的数据类型不同。Write to Spreadsheet File.vi 有两种输入数据类型,1D 数组输入和2D数组输入。这两种输入都是32-bit 单精度浮点数组。所以,当使用这个函数的时候,你的数据首先自动转换(或者强制转换)成32-bit 单精度浮点数组,然后在被写入文件,并且以普通的电子表格可以识别的格式保存, 比如Microsoft Excel。LabVIEW对数据进行强制转换时会进行特别的标注,在输入数据VI的端口会显示一个灰色的小点。
你也可能遇到其他的相似情况,比如当写入很大或者很小的数据时,其不能表示成同样的精度(比如单精度,双精度或者更大的数据类型)。 Get Date/Time in Seconds 函数返回一个64-bit 双精度浮点值(具体的来说,是1903年 12月31日晚上6点到当前时间经历的秒数),这个值将超过 Write to Spreadsheet File.vi可以接受的范围。当 Write to Spreadsheet File.vi需要将一个很大的数值(比如Get Date/Time in Seconds产生的数值)写入电子表格时,将对该数值进行四舍五入或者做较小的改动,导致引入一些误差。这个函数会常常使所有的输入项都为同一个值。
在使用Read From Spreadsheet File.vi读取时间信息时也会遇到相同的问题。 Read From Spreadsheet File.vi的输出为单精度。可以改变Write to Spreadsheet File.vi和Read From Spreadsheet File.vi的输入和输出数据的表示法,使其符合你的数据类型。可以通过以下方法来转换为双精度数据类型:
- 放置Write to Spreadsheet File.vi 在你的程序框图中.
- 双击Write to Spreadsheet File.vi 图标,打开该函数.
- 观察程序框图.
- 右键单击 "1D data"的接线端, 选择表示法. 选择DBL (双精度).
- 右键单击 "2D data"的接线端, 选择表示法. 选择DBL (双精度).
- 保存该VI 为另一个名字 (比如 Write to Spreadsheet File (DBL).vi)
- 对Read From Spreadsheet File.vi重复1-6步, 改变以下接线端"all rows," "first row," and "type(empty)" 从单精度到双精度.
当使用双精度的输入和输出时,时间数据就可以正常储存和下载了。
相关链接:
附件:
报告日期: 11/12/1999
最近更新: 10/28/2008
文档编号: 1RBDAG5P
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.