企业应用程序中的十进制舍入策略

时间:2010-03-24 20:34:21

标签: c# database enterprise rounding

好吧,我想知道有关舍入小数的事情,并将它们存储在数据库中。

问题是这样的:

假设我们有客户和发票。

发票的总价格为100.495美元(由于某些折扣百分比不是整数),但显示为$ 100.50(四舍五入时,仅用于在发票上打印)。它以100.495美元的价格存储在DB中,这意味着当客户存入100.50美元的存款时,该帐户将额外支付0.005美元。如果这是四舍五入的,它将显示为$ 0,但是在几张发票后它将继续累积,这看起来是错误的(尽管实际上并非如此)。

在这种情况下最好做什么。存储100.50美元的价值,或保留原样?

4 个答案:

答案 0 :(得分:5)

您应该准确存储您希望它反映在余额上的数字。

您实际上是在向客户收取半分钱吗?如果是,则应该反映在DB条目中。如果你不是,那就不应该。

但除非我每天发布应计利息(例如Prosper.com),否则我会坚持使用人们可以支付(或退出)的货币单位。

答案 1 :(得分:1)

这取决于什么更重要。但通常情况下,如果您使用会计或发票系统,调整余额是一个重要目标。因此,我会存储舍入值。

答案 2 :(得分:1)

我会(严重地)保存两个。

答案 3 :(得分:1)

存储两者。无论如何,您的客户将无法通过信用卡支付非四舍五入的金额,但您的图书需要正确。