更新:事實證明,它只是LabView搞砸了。即使整數不正確。刪除並重新創建一些節點解決了問題。爲什麼LabView將小數轉換爲小浮點數?
我寫了一個由LabView工程師使用的.Net 3.5程序集。至少LabView 7,但我認爲更高。我的程序集中的一個方法是返回一個對象數組,其中每個實例都有一個類型爲decimal
(除其他外)的屬性。 LabView工程師沒有做任何特別的事情,只是將序列轉儲到VI的前端,並且每個這些十進制屬性都看起來像非常小的浮點數。實際的小數可能是740.0,但它在LabView中被看作是雙倍數值,其值爲8.12345E-315。這關閉了好幾個數量級!
字符串和布爾屬性正在通過很好。
任何想法爲什麼會發生這種情況?
編輯:我們測試了這個使用一個非常簡單的類與一些小數字段和屬性,它在LabView中工作得很好。這個DLL有一些可怕的事情發生,所以我們正在嘗試其他一些測試,看看我們是否可以使用不同的DLL複製問題。
這裏是一些endian-changing測試的截圖。交換簡單測試類的屬性的endian類型產生了相同的值。交換真實類庫中的小數位的末端類型只會產生不同的小浮點數。
http://i.imgur.com/WpZ8bYX.jpg
你可以發佈一些LabVIEW代碼嗎?該圖的屏幕截圖就足夠了 – CharlesB