我的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 值并尝试在数据库中保存一些后再次检查它们并重新计算,同时在表单中输入正确显示但在数据库中已经错误。
谢谢。
答案 0 :(得分:0)
数据如何存储在数据库中?浮?
如果是钱,请将其存储为十进制(18,2)。
编辑: 什么是“ValuesDecimals”?如果你说SELECT SUM(myfield)和myfiled是18,3那么它就是正确的。
听起来你正在用“ValuesDecimals”求和,这可能是错误的来源。
尝试显示完整的代码?