c# -根据值将其十进制为整数和四舍五入

本文关键字:整数 四舍五入 十进制 -根 | 更新日期: 2023-09-27 18:15:27

我正在尝试将decimal转换为integer,并希望根据情况向上或向下舍入值。

基本的例子是:

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

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

c# -根据值将其十进制为整数和四舍五入

如果x是您想要四舍五入的数字,并且您想要"正常"四舍五入行为(因此,0.5总是四舍五入),则需要使用Math.Round(x, MidpointRounding.AwayFromZero)。注意,如果实际计算的是分数,并且分子和分母都是整数,则需要先将其中一个强制转换为双精度(否则,除法运算符将产生一个四舍五入的整数),如果希望结果是int,则需要强制转换Round()的结果:

int a = 5;
int b = 2;
double answer = (int) Math.Round(a / (double) b, MidpointRounding.AwayFromZero);

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();

Math.Round(d)做你需要的吗?

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

查看Round参考页面

你可以试试这个

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

有时,人们在转换成int之前会给数字加0.5。