Каков наилучший способ конвертировать double
в int
? Следует ли использовать актерский состав?
etc.
:)
Каков наилучший способ конвертировать double
в int
? Следует ли использовать актерский состав?
etc.
:)
Ответы:
Вы можете использовать приведение, если хотите использовать поведение усечения по умолчанию до нуля. Кроме того , вы можете использовать Math.Ceiling
, Math.Round
, и Math.Floor
т.д. , - хотя вы все еще будете нуждаться в актерском впоследствии.
Не забывайте, что диапазон int
намного меньше, чем диапазон double
. Преобразование из double
в int
не вызовет исключения, если значение находится вне диапазона int
в неконтролируемом контексте, тогда как вызов Convert.ToInt32(double)
будет. Результат приведения (в непроверенном контексте) явно не определен, если значение находится за пределами диапазона.
int
всегда составляет 32 бита, независимо от того, используете ли вы 32- или 64-битный компьютер.
intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
using System;
бы верхнюю часть файла, в этот момент это могло бы быть простоintVal = Convert.ToInt32(Math.Floor(dblVal));
using
директивах.
если вы используете приведение, то есть (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(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
double_value = 0.1