我正在建设一个与贝宝整合的电子商务网站。
我们使用多种货币,所以我想确保(出于会计原因)我正确地执行了货币转换的任何数学运算。
在将货币换算乘以原始货币后,我总是在小数点后面有很多尾随数字。
有没有一种标准的方法来做到这一点?我应该截断还是舍入?我是否需要多次舍入,以防舍入1/1000小数会影响到1/100小数的舍入?
我是否应该这样做:
Math.Round(Math.Round(x, 3), 2)我一直很难找到关于如何做到这一点的好信息(希望美国和欧洲也是如此)。
发布于 2012-01-04 03:47:16
您应该使用Math.Round(x, 2, MidpointRounding.AwayFromZero)
发布于 2012-01-04 03:32:25
我假设您应该能够直接使用Math.Round,就像.NET使用Bankers Rounding.一样
只需记住,为了不引入舍入误差,舍入始终是你要做的最后一件事。
在这样的货币系统中,我还会将实际的未四舍五入的值额外存储为小数,以供将来解决问题之用。
发布于 2014-11-12 06:40:56
如果你的站点有多种货币,那么使用这个来根据当前用户的货币和文化来正确地舍入小数:
int currencyDecs = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits;
decimal roundedDecimalPrice = Math.Round(decimalPrice, currencyDecs, MidpointRounding.AwayFromZero);https://stackoverflow.com/questions/8717503
复制相似问题