Каков наилучший способ конвертировать 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