0

我正在尝试将 a 转换decimalinteger并希望根据情况向上或向下舍入该值。

基本上例子是:

  • 12/3 = 4 所以应该四舍五入到 4
  • 11/3 = 3.66666 所以应该四舍五入到 4
  • 10/3 = 3 = 3.33333 所以应该四舍五入到 3
  • 9/3 = 3 所以应该四舍五入到 3

无论我在互联网上找到什么,总是四舍五入或四舍五入,从不根据数字做出判断。

4

4 回答 4

4

如果x是您要四舍五入的数字,并且您想要“正常”的舍入行为(这样 0.5 总是向上舍入),则需要使用Math.Round(x, MidpointRounding.AwayFromZero). 请注意,如果您实际上正在计算分数并且分子和分母是整数,则需要先将其中一个转换为 double(否则,除法运算符将产生一个向下舍入的整数),并且如果您希望结果是一个int,你需要转换结果Round()

int a = 5;
int b = 2;
double answer = (int) Math.Round(a / (double) b, MidpointRounding.AwayFromZero);
于 2013-05-24T15:38:49.913 回答
1

Math.Round(d)是否满足您的要求?

返回值:最接近参数d的整数。如果 d 的小数部分介于两个整数之间,其中一个为偶数,另一个为奇数,则返回偶数。请注意,此方法返回 Decimal 而不是整数类型。

查看回合参考页面

于 2013-05-24T15:36:54.233 回答
1

Math.Round(value)应该做你想做的。示例控制台应用程序代码来演示:

Console.Write("12 / 3 = ");
Console.WriteLine((int)Math.Round(12d / 3d));
Console.WriteLine();

Console.Write("11 / 3 = ");
Console.WriteLine((int)Math.Round(11d / 3d));
Console.WriteLine();

Console.Write("10 / 3 = ");
Console.WriteLine((int)Math.Round(10d / 3d));
Console.WriteLine();

Console.Write("9 / 3 = ");
Console.WriteLine((int)Math.Round(9d / 3d));
Console.WriteLine();

Console.ReadKey();
于 2013-05-24T15:39:52.647 回答
0

你可以试试这个

Math.Round(d, 0, MidpointRounding.AwayFromZero)

有时,人们在转换为 int 之前将数字加 0.5。

于 2013-05-24T15:43:14.847 回答