将double转换为int
将double
转换为int
的最佳方法是什么? 应该使用演员阵容吗?
如果你想要默认的truncate-to-zero行为,你可以使用cast。 另外,你可能想使用Math.Ceiling
, Math.Round
, Math.Floor
等 – 虽然你仍然需要一个演员之后。
不要忘记, int
的范围远小于double
的范围。 如果在未经检查的上下文中该值在int
范围之外,则从double
到int
的强制转换不会引发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);