我正在寻找正确的格式,并在 MySQL 中对货币进行数学运算,其中价格是动态计算的,因此精度大于 2dp。
calculated unit Price = 1.255
displayed price = 1.26
如果客户订购 100 件产品:
actual total (100 * 1.255) = 125.50
displayed total (100 * 1.26) = 126.00
因此,如果客户查看他们的发票并进行数学计算,他们会发现他们的收费少了 50 便士,因为我将向他们收取 125.50 英镑,但他们会自己计算并认为他们应该已收取 126.00 英镑。
我认为解决这个问题的最简单方法是截断或四舍五入计算出的单价,例如ROUND(1.255, 2)
或 TRUNCATE(1.255, 2)
表示显示和帐户将匹配。
对于非常小的数量来说这不是问题,但是当客户订购更多单位时,它就会变得很重要。
问题是我不想向客户收取 125.00 英镑或 126.00 英镑的费用,我想向他们收取 100 件商品 125.50 英镑的费用。
有什么想法吗?或者我应该简单地以 3dp(而不是 2dp)向客户显示价格,而是四舍五入?
最佳答案
通过对单价进行四舍五入,您正在破坏信息。正如您所建议的,解决此问题的唯一方法是向客户完整显示单价。
关于MySQL 货币格式化和数学运算,精度大于 2dp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425558/