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