首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MidpointRounding in Math.Round在C#中不能正确工作

MidpointRounding in Math.Round在C#中不能正确工作
EN

Stack Overflow用户
提问于 2022-11-21 00:08:28
回答 1查看 42关注 0票数 1

MidpointRound.AwayFromZero过载应该是在四舍五入的情况下将5整整。

例:Math.Round(1.5, 1, MidpointRounding.AwayFromZero);

这个回合是1.5到2轮。

但是,当我尝试Math.Round(1.025, 2, MidpointRounding.AwayFromZero);时,它会将其舍入到1.02。不过,它应该会聚集到1.03。

有人知道为什么会这样吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 00:20:12

1.025不能完全表示为double类型。浮点数有这个问题。见Why are floating point numbers inaccurate?

当您将1.025写成一个double数字时,它在内部会比1.025小一些。这就是为什么四舍五入提供了一个意想不到的值。

当处理您想要的值与显示值完全相同的货币或其他东西时,请使用decimal类型而不是double类型。

代码语言:javascript
运行
复制
decimal roundedValue = Math.Round(1.025m, 2, MidpointRounding.AwayFromZero);

请注意,数字后面的m将该数字转换为decimal类型的文字。

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

https://stackoverflow.com/questions/74513007

复制
相关文章

相似问题

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