我从3个值中计算出一个值,从列表中进行选择:
var applicable = from b in discounts.ToList() where
(b["Interest Rate"].Cast<double>() +
(-b["Discount/Premium"].Cast<double>()) +
((-b["Discount/Premium"].Cast<double>()) / (b["Term"].Cast<int>() / 12))) >= GlobalVar.minRealReturn
select b;
当我接受“适用”的第一个元素时,我收到一个不应该在列表中的元素(我检查结果超过 14的元素。但是这个元素得到的结果是13.975)
答案 0 :(得分:1)
主要问题可能是:
b["Term"].Cast<int>() / 12
没有做你认为的事情。
让我们说b["Term"].Cast<int>()
是18。你可能会认为18/12会导致1.5。但它并没有。它会产生1 - 因为你正在做integer division。
因此,您可能需要将代码更改为:
b["Term"].Cast<int>() / 12D
因为这将强制它不使用整数除法。 您也可以将Cast<int>
转换为Cast<double>
。