C#数学第四轮-11.5到11,第四轮-11.6到12

C#数学第四轮-11.5到11,第四轮-11.6到12,c#,visual-studio,C#,Visual Studio,我正在用Selenium和C#测试一个应用程序。此应用程序执行以下舍入(我认为这是javascript舍入标准): -11.51至-12轮 -11.5四舍五入到零,所以它变为-11 11.5四舍五入至12 这是基于所需的规格,所以我必须计算数字和四舍五入自己来在这个最终结果,你看到上面。我必须使用C#库来绕过它们。用AwayFromZero表示正数是可行的,但我似乎找不到一个有效的方法来对负数进行四舍五入 例如,将AwayFromZero、ToEven或Floor用于底片,我得到: -11

我正在用Selenium和C#测试一个应用程序。此应用程序执行以下舍入(我认为这是javascript舍入标准):

  • -11.51至-12轮
  • -11.5四舍五入到零,所以它变为-11
  • 11.5四舍五入至12
这是基于所需的规格,所以我必须计算数字和四舍五入自己来在这个最终结果,你看到上面。我必须使用C#库来绕过它们。用AwayFromZero表示正数是可行的,但我似乎找不到一个有效的方法来对负数进行四舍五入

例如,将AwayFromZero、ToEven或Floor用于底片,我得到:

  • -11.51至12
  • -11.5至12
使用天花板和截断,我得到:

  • -11.51至-11
  • -11.5至-11
总之,我需要一个算法或某种方法,当我的数字是-0.5或更高,或-10.5或更高时,能够向零进位。我还需要同样的算法来将-10.51四舍五入到-11,这个呢

public static double MyRound( double x )
{
    return Math.Floor( x + 0.5 );
}

这似乎满足了您所有的测试用例。

您的问题是什么?这听起来像是正确的行为。从0取整
-10.5
就是
-11
。想一想数字线。也许我没有足够清楚地解释我的问题。我的原始帖子的第一部分解释了应用程序是如何舍入负片的。我的第二部分解释了我如何无法使用任何C#libraries对应用程序进行四舍五入匹配问题是他希望所有正数都从零开始,但是对于负数,他想要一个不存在的到零选项。如果你需要遵循.NET不支持的特定要求,听起来你需要实现你自己的四舍五入alg。我很确定,数学计算结果确实与OP所寻找的完全一致。这可能可行,然而,我使用的类型是十进制。当我将该方法更改为decimal时,它表示“运算符+不能应用于decimal和double类型的操作数”@MikeJohnston将
0.5
更改为
0.5m