十进制值未正确舍入

时间:2011-01-31 12:35:36

标签: c#-3.0 decimal currency

我的SQL Express数据库中有一些十进制(18,2)字段。

现在当一些聚合碰巧得到结果时。我有时会损失1美分。

假设结果应该是192,84欧元我的程序显示192,83欧元,但如果你使用计算器的聚合显示192,84。

知道为什么会发生这种情况。我使用格式字符串货币的DevExpress控件。 我有个想法将字段更改为十进制(18,3)你觉得怎么样?

谢谢

[编辑]

现在当第一次显示的值总和(例如1.074,64为1.074,65)表示我可以看到它向下舍入但正确的是第二次结束时,65。

示例:194,61 + 182,20 + 697,84 = 1.074,65,但下降至1.074,64。如果您尝试再次获取这些值,它将正确显示....

你觉得我应该总结一下吗?什么是最好的十进制值的舍入方法?

一些代码:

SumingTotal = AnObject.ListOfAType.Sum(p => p.DecimalProperty) +
                                                (DecimalValue1 + DecimalValue2);

如果我离开显示这些的环境,应该等于1.074,65,但显示1.074,64 值并尝试在数据库中保存一些后再次检查它们并重新计算,同时在表单中输入正确显示但在数据库中已经错误。

谢谢。

1 个答案:

答案 0 :(得分:0)

数据如何存储在数据库中?浮?

如果是钱,请将其存储为十进制(18,2)。

编辑: 什么是“ValuesDecimals”?如果你说SELECT SUM(myfield)和myfiled是18,3那么它就是正确的。

听起来你正在用“ValuesDecimals”求和,这可能是错误的来源。

尝试显示完整的代码?