MySQL 货币格式化和数学运算,精度大于 2dp

标签 mysql math currency currency-formatting

我正在寻找正确的格式,并在 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/

相关文章:

Mysql连接2个互不相关的表

math - 如何减去两个 IEEE-754 正数?

php - PHP 平均排名

.net - 设置货币格式而不进行四舍五入

mysql - 在 Rails 中选择随机记录

php - 错误的整数值 : '' for column 'ColorHair' at row 1

php - 表中显示重复记录

Java Math.IEEERemainder 令人困惑的结果

javascript - CAD 货币的 NumberFormat 不正确

java - 如何使用 Java 应用程序从用户手机上取钱?