0
我遇到了一件讓我很困惑的事情。這似乎取決於我在哪裏維以下字典,我的價值(作爲雙)被截斷。vb.net linq to dictionary rounding error
採取以下代碼:
Dim dc As New Generic.Dictionary(Of Integer, Double)
While Loop
dc = (From C In dtC.AsEnumerable Where C!ID = .Rows(i).Item("GID")
Group C By C!DID Into Group
Select DID, DM =
Group.Sum(Function(C) CDbl(C!M))).ToDictionary(Function(b) CInt(b.DID),
Function(c) c.DM)
Dim testdc As Generic.Dictionary(Of Integer, Double) =
(From C In dtC.AsEnumerable Where C!ID = .Rows(i).Item("GID")
Group C By C!DID Into Group
Select DID, DM =
Group.Sum(Function(C) CDbl(C!M))).ToDictionary(Function(b) CInt(b.DID),
Function(c) c.DM)
爲字典直流的結果是(6,6.3)和(1200,1.9)
對於字典結果testdc是(6,6.3),並(1200,1.85)
原始值顯示1.9實際上是dc爲1.89999999967,testdc爲1.85。
1.85是正確的值。任何人都知道這裏發生了什麼?
給我們足夠的代碼執行,你可能會得到答案。 – Joshua
你絕對應該把注意力放在變量名上,使它們更易讀懂。特別是在我們沒有IDE並且需要實際讀取代碼的情況下 – Fabio
這些'!'符號是否正確?我從來沒有在vb中看到過。 –