首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确的方式做四舍五入货币转换在贝宝?

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

Stack Overflow用户
提问于 2012-01-04 03:21:31
回答 3查看 12.9K关注 0票数 13

我正在建设一个与贝宝整合的电子商务网站。

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

在将货币换算乘以原始货币后,我总是在小数点后面有很多尾随数字。

有没有一种标准的方法来做到这一点?我应该截断还是舍入?我是否需要多次舍入,以防舍入1/1000小数会影响到1/100小数的舍入?

我是否应该这样做:

代码语言:javascript
复制
Math.Round(Math.Round(x, 3), 2)

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-04 03:47:16

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

票数 7
EN

Stack Overflow用户

发布于 2012-01-04 03:32:25

我假设您应该能够直接使用Math.Round,就像.NET使用Bankers Rounding.一样

只需记住,为了不引入舍入误差,舍入始终是你要做的最后一件事。

在这样的货币系统中,我还会将实际的未四舍五入的值额外存储为小数,以供将来解决问题之用。

票数 3
EN

Stack Overflow用户

发布于 2014-11-12 06:40:56

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

代码语言:javascript
复制
int currencyDecs = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits;
decimal roundedDecimalPrice = Math.Round(decimalPrice, currencyDecs, MidpointRounding.AwayFromZero);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8717503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档