首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET Math.Rounding和MidpointRouding.ToEven是如何工作的?

.NET Math.Rounding和MidpointRouding.ToEven是如何工作的?
EN

Stack Overflow用户
提问于 2014-01-29 08:11:36
回答 1查看 211关注 0票数 0

我一直在寻找MidpointRouding.ToEven是如何工作的。在.NET中,这似乎是默认的舍入方法。请检查我是否正确:

  1. Math.Round(a,b)Math.Round(a,b,MidpointRounding.ToEven)相同
  2. Math.Round(2.5)=2Math.Round(1.5) = 2
  3. Math.Round(1.25)=2 Math.Round(1.15,1) = 1.2
  4. Math.Round(1.12305,4) = 1.1230,与Math.Round(1.12305,4,MidpointRounding.ToEven)相同

但是,对于第4条语句,我得到了1.1231而不是1.1230 (使用C#)。我想我一定弄错了。谁来解释一下为什么会发生这种事?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-01-29 08:20:48

1.12305并不完全可以表示为double。最近的double略高于1.12305

如果你尝试:

代码语言:javascript
复制
Math.Round(1.12305m, 4) = 1.1230

它将转到1.1230,因为decimal可以精确地表示1.12305

另见:关于浮点算法,每个计算机科学家应该知道什么?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21425441

复制
相关文章

相似问题

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