Каков наилучший способ конвертировать double
в int
? Следует ли использовать актерский состав?
c#
.net
casting
type-conversion
user496949
источник
источник
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
источник
Да, почему бы не?
Использование
Convert
класса тоже хорошо работает.источник
Convert.ToInt32
это лучший способ конвертироватьисточник
Лучший способ - просто использовать
Convert.ToInt32
. Это быстро, а также правильно.Зачем делать это сложнее?
источник
Вот полный пример
Если вы хотите округлить число до ближайшего целого, сделайте следующее:
источник
Я думаю, что лучший способ
Convert.ToInt32
.источник
int myInt = (int) Math.Ceiling (myDouble);
источник
Мои способы:
источник
double_value = 0.1
когда вы хотите отправить его на метку или что-то, и вам не нужен какой-либо дробный компонент, это лучший способ
если вы хотите только с 2, и это всегда так
источник