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中看到过。 –