Який найкращий спосіб перетворити 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