Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 企业应用程序中的小数舍入策略_C#_Database_Enterprise_Rounding - Fatal编程技术网

C# 企业应用程序中的小数舍入策略

C# 企业应用程序中的小数舍入策略,c#,database,enterprise,rounding,C#,Database,Enterprise,Rounding,嗯,我想知道一个关于舍入小数并将其存储在DB中的东西 问题是这样的: 假设我们有一个客户和一张发票 发票总价为$100.495(由于某些折扣百分比不是整数),但显示为$100.50(四舍五入时,仅用于打印发票)。它以100.495美元的价格存储在DB中,这意味着当客户存款100.50美元时,账户上会有0.005美元的额外金额。如果四舍五入,它将显示为$0,但在两张发票之后,它将继续累积,这看起来是错误的(尽管它实际上不是) 在这种情况下最好做什么。存储100.50美元的价值,或者让一切保持原样?

嗯,我想知道一个关于舍入小数并将其存储在DB中的东西

问题是这样的:

假设我们有一个客户和一张发票

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


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

这取决于什么更重要。但通常,如果你在做一个会计或发票系统,平衡是一个重要的目标。因此,出于这个原因,我会存储四舍五入的值。

我会(认真地)保存这两个值。

同时存储这两个值。您的客户无论如何都无法用信用卡支付未取整的金额,但您的帐簿必须正确。

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

你真的要向客户收取半美分吗?如果是,它应该反映在DB条目中。如果你不是,那就不应该了


但除非我每天公布应计利息(比如Prosper.com),否则我会坚持使用人们可以准确支付(或提取)的货币单位。

不,我们不收取那半美分的费用,因为发票上写着100.50美元,这是客户存款的金额。该系统几乎只用于客户余额,没有资产负债表、现金流量表或任何其他重要的会计信息。那么,你有什么建议,把它四舍五入,然后像那样存储呢?在这种情况下,一定要存储四舍五入的数量。如果客户购买了一个,则收取(并储存)100.50美元(或100.49美元,但您希望将全部金额取整)。如果他们买了两个,收取并储存200.99美元。在你的情况下,半美分在订单完成后并不重要,所以忘掉它。无论你的业务规则是什么,这都是你应该存储的。如果您收取100.50美元,而客户支付了100.50美元,那么存储100.495美元对所有相关人员来说都是毫无价值的。就像如果它达到100.3333,你不会存储所有的三个,你的业务规则会告诉你如何以及何时切断它。嗯-哦!编辑战争!“逗号!”“不,句号!”“不,句号!”“不,句号!”…让你自己陷于意大利腊肠切片攻击,嗯?:-)你每天都能学到新东西O