将double转换为int

double转换为int的最佳方法是什么? 应该使用演员阵容吗?

如果你想要默认的truncate-to-zero行为,你可以使用cast。 另外,你可能想使用Math.CeilingMath.RoundMath.Floor等 – 虽然你仍然需要一个演员之后。

不要忘记, int的范围远小于double的范围。 如果在未经检查的上下文中该值在int范围之外,则从doubleint的强制转换不会引发exception,而对Convert.ToInt32(double)的调用将会发生。 如果该值超出范围,则转换的结果(在未经检查的上下文中)显式不确定。

如果使用(int)SomeDouble ,即(int)SomeDouble ,则将截断小数部分。 也就是说,如果SomeDouble是4.9999,结果将是4,而不是5.转换为int不会将数字四舍五入。 如果你想四舍五入使用Math.Round

对,为什么不呢?

 double someDouble = 12323.2; int someInt = (int)someDouble; 

使用Convert类也可以。

 int someOtherInt = Convert.ToInt32(someDouble); 

Convert.ToInt32是转换的最佳方法

这是一个完整的例子

 class Example { public static void Main() { double x, y; int i; x = 10.0; y = 3.0; // cast double to int, fractional component lost (Line to be replaced) i = (int) (x / y); Console.WriteLine("Integer outcome of x / y: " + i); } } 

如果要将数字四舍五入到更接近的整数,请执行以下操作:

 i = (int) Math.Round(x / y); // Line replaced 

我认为最好的办法是Convert.ToInt32

最好的方法是简单地使用Convert.ToInt32 。 它速度快,也正确地轮回。

为什么使它更复杂?

我的方法是:

  - Convert.ToInt32(double_value) - (int)double_value - Int32.Parse(double_value.ToString()); 
 label8.Text = "" + years.ToString("00") + " years"; 

当你想把它发送给一个标签,或者某个东西,而且你不想要任何小数部分时,这是最好的方法

 label8.Text = "" + years.ToString("00.00") + " years"; 

如果你只想要2,而且总是这样

int myInt =(int)Math.Ceiling(myDouble);