正确的方式做四舍五入货币转换在贝宝

本文关键字:转换 货币 四舍五入 方式做 | 更新日期: 2023-09-27 18:19:16

我正在建立一个与paypal集成的电子商务网站。

我们接受多种货币,所以我想确保(出于会计原因)我正确地执行货币转换的任何数学运算。

在将货币转换乘以原始货币后,我总是在小数点后得到许多尾随数字。

是否有一个标准的方法来做到这一点?我应该截断还是圆整?如果1/1000小数的四舍五入会影响1/100小数的四舍五入,我需要进行多次四舍五入吗?

我是否应该这样做:

Math.Round(Math.Round(x, 3), 2)

我一直很难找到关于如何做到这一点的好信息(希望美国和欧洲是一样的)。

正确的方式做四舍五入货币转换在贝宝

您应该使用Math.Round(x, 2, MidpointRounding.AwayFromZero)

我认为您应该能够直接使用Math。四舍五入,因为。net使用了银行家四舍五入。

请记住,为了避免舍入误差,在最后做的事情中一定要把舍入设置为绝对的舍入。

在这样的货币系统中,我还将实际的未舍入值存储为小数,以便将来解决问题。

如果你的网站有多种货币,那么使用这个来根据当前用户的货币和文化正确地四舍五入小数:

int currencyDecs = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits;
decimal roundedDecimalPrice = Math.Round(decimalPrice, currencyDecs, MidpointRounding.AwayFromZero);