问题:为什么 C# 中的 Math.Round 方法会意外地对数字进行舍入,如何解决此问题?

问题描述 投票:0回答:1

我在 C# 中遇到了数字舍入的问题。乍一看,Math.Round() 方法似乎工作正常,但是当对某些数字进行四舍五入时,结果却出乎意料。

示例:

  1. 对于数字 3.1455543,调用 Math.Round(3.1455543, 2) 返回预期结果 — 3.15
  2. 但是,对于数字 3.1447456,相同的方法 Math.Round(3.1447456, 2) 返回 3.14,这不是我所期望的(我想要 3.15)。

谁能解释为什么会发生这种情况?我知道 Math.Round 方法使用“银行家舍入”(舍入一半到偶数),但为什么这种特定情况不遵循预期的舍入行为?

有没有办法解决这个问题,使数字根据标准数学规则而不是“银行家舍入”方法进行舍入?

P.S.仅当您确切知道如何解决此问题时才请回复。我不想要未经实际例子检验的理论讨论或建议。我厌倦了不起作用的“建议”,所以请确保您的答案是基于实际经验并经过您的测试。

预先感谢您的帮助!

c# math rounding
1个回答
0
投票

它引用最接近小数点后 2 位的第 3 个数字。

Math.Round(数字,近东)

数字就是数字

最接近的小数位被四舍五入

(nearest + 1) 决定向上或向下舍入

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.