2015-07-03 77 views
1

任何人都可以解釋爲什麼下面的結果不等於零嗎?在VBA中取走2個單精度數字時出現奇怪的結果

? CSng("0.199881939681229") 
? CSng(0.1998819) 
? CSng(CSng(0.199881939681229) - CSng(0.1998819)) 

一號線返回0.1998819 二號線返回0.1998819太 但第三返回4.470348E-08

哪裏是這個數字的,如果這兩個數字都完全按相同值的單代表未來精確的數據類型。

+0

這很奇怪,它應該是3.968122E-08,你使用CSNG的任何原因?當我使用變量類型單我得到正確的答案。 –

+0

* note *我能夠複製這個問題,很奇怪,必須與VBA如何處理轉換有關。當我檢查變量時,他們都是正確的,除了減法後。 –

+0

在下面看到我的評論,兩個數字都被稍微不同的二進制字符串所適用,即使VBA爲兩者返回相同的值。 – PaMcD

回答