我正在尝试这样做,但我发现的只是四舍五入到最接近的整数。我想知道是否有办法用 math.round 来做到这一点,或者是否有不同的解决方案。谢谢!
我想根据第3个小数点对值进行综合.应始终采用UP值并进行舍入.我使用了Math.Round,但它并没有像我预期的那样产生结果.
场景1
var value1 = 2.526;
var result1 = Math.Round(value1, 2); //Expected: 2.53 //Actual: 2.53
Run Code Online (Sandbox Code Playgroud)
情景2
var value2 = 2.524;
var result2 = Math.Round(value2, 2); //Expected: 2.53 //Actual: 2.52
Run Code Online (Sandbox Code Playgroud)
场景1没问题.正如我预期的那样产生结果.在第二个场景中,我的金额为2.522.我想考虑第三个小数点(在这种情况下是'4')它应该向上舍入.预期结果是2.53
无论小数点是3(小于5还是大于5),它都应该总是向上舍入.
谁能为我提供解决方案?我不认为Math.Round在这里帮助我.
我有这样的事情:
double d1 = Math.Round(88.5, 0); // result 88
double d2 = Math.Round(89.5, 0); // result 90
Run Code Online (Sandbox Code Playgroud)
为什么Math.Round()将数字向下舍入,奇数向上舍入?
可能重复:
.Net Round Bug
在C#中:Math.Round(2.5)结果是2(而不是3)!你在跟我开玩笑吗?
码:
var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
AFAIK .NET的默认圆形选项是偶数,所以Math.Round(1.225,2)应该给1.22,但它给出1.23.
Math.Round(2.225,2) = 2.22
Math.Round(100.225,2) = 100.22
Run Code Online (Sandbox Code Playgroud)
我试过的所有值都是最接近的,但只有1.225和-1.225回合到1.23和-1.23.
我想显示转换double为int.但我很困惑.这是我的代码.
private void tbxDouble_TextChanged(object sender, EventArgs e)
{
tbxInt.Text = Convert.ToDouble(tbxDouble.Text).ToString("F0");
tbxInt2.Text = Math.Round(Convert.ToDouble(tbxDouble.Text),0).ToString();
}
Run Code Online (Sandbox Code Playgroud)
结果为100,5 => 101和100
结果为100,56 => 101和101
结果为100,49 => 100和100
为什么所有结果都不是101?这有什么问题?
可能重复:
在C#中:Math.Round(2.5)结果为2(而不是3)!你在跟我开玩笑吗?
.Net Round Bug
我有一个中间值(number.5),我需要指定如何舍入(上限值或下限值).
我理解的行为Math.Round与MidPointRounding参数,但不解决我的问题:
// To Even
Console.WriteLine(Math.Round(4.4)); // 4
Console.WriteLine(Math.Round(4.5)); // 4
Console.WriteLine(Math.Round(4.6)); // 5
Console.WriteLine(Math.Round(5.5)); // 6
// AwayFromZero
Console.WriteLine(Math.Round(4.4)); // 4
Console.WriteLine(Math.Round(4.5)); // 5
Console.WriteLine(Math.Round(4.6)); // 5
Console.WriteLine(Math.Round(5.5)); // 6
// in one case I need
Console.WriteLine(Math.Round(4.4)); // 4
Console.WriteLine(Math.Round(4.5)); // 4
Console.WriteLine(Math.Round(4.6)); // 5
Console.WriteLine(Math.Round(5.5)); // 5
// another case I need
Console.WriteLine(Math.Round(4.4)); // 4
Console.WriteLine(Math.Round(4.5)); // 5
Console.WriteLine(Math.Round(4.6)); // 5
Console.WriteLine(Math.Round(5.5)); // 6
Run Code Online (Sandbox Code Playgroud) 我有一个MVC3 C#.Net网络应用程序.计算的乘积是158*1.75 = 276.5.我希望这个数字可以向上舍入到277.我使用的是Math.Round,但它会向下舍入.我知道我在某个地方见过这个问题.解决方案是什么?
我有一个双精度值:0.314285,我想将其四舍五入到小数点后 5 位。从数学的角度来看,我的预期结果是:0.31429。在我的代码中,我使用带有MidPointRounding.AwayFromZero参数重载的 Math.Round ,结果输出为:0.31428。
有没有另一种方法来实现输出结果为:0.31429??
我必须错过.NET舍入的一些微妙之处.所以我看这个例子:
decimal num = 2.5M;
var result = Math.Round(num);
Run Code Online (Sandbox Code Playgroud)
为什么result = 2?(我本来应该预期3,因为它应该围绕)