Каков наилучший способ преобразования double
в int
? Должен ли использоваться литой?
Конвертировать double в int
Ответ 1
Вы можете использовать трансляцию, если вы хотите, чтобы поведение по умолчанию было усечено по отношению к нулю. Кроме того, вы можете использовать Math.Ceiling
, Math.Round
, Math.Floor
и т.д., Хотя вам все равно потребуется бросок впоследствии.
Не забывайте, что диапазон int
намного меньше диапазона double
. Выброс из double
в int
не будет генерировать исключение, если значение находится вне диапазона int
в неконтролируемом контексте, тогда как вызов Convert.ToInt32(double)
будет. Результат cast (в неконтролируемом контексте) явно undefined, если значение вне диапазона.
Ответ 2
если вы используете cast, т.е. (int)SomeDouble
, вы обрезаете дробную часть. То есть, если SomeDouble
было 4.9999, результат будет равен 4, а не 5. Преобразование в int не округляет число. Если вы хотите использовать закругление Math.Round
Ответ 3
Да, почему бы и нет?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Использование класса Convert
тоже хорошо работает.
int someOtherInt = Convert.ToInt32(someDouble);
Ответ 4
Convert.ToInt32
- лучший способ конвертировать
Ответ 5
Я думаю, что лучший способ - Convert.ToInt32
.
Ответ 6
Вот полный пример
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
Ответ 7
Лучший способ - просто использовать Convert.ToInt32
. Это быстро и точно округляет.
Почему сложнее?
Ответ 8
Мои способы:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
Ответ 9
label8.Text = "" + years.ToString("00") + " years";
когда вы хотите отправить его на ярлык или что-то еще, и вам не нужен какой-либо дробный компонент, это лучший способ
label8.Text = "" + years.ToString("00.00") + " years";
если вы хотите только с 2, и всегда это нравится
Ответ 10
int myInt = (int) Math.Ceiling(myDouble);