Apa cara terbaik untuk mengonversi a doublemenjadi int? Haruskah gips digunakan?
etc.:)
Apa cara terbaik untuk mengonversi a doublemenjadi int? Haruskah gips digunakan?
etc.:)
Jawaban:
Anda dapat menggunakan gips jika Anda ingin perilaku truncate-zero-zero default. Atau, Anda mungkin ingin menggunakan Math.Ceiling, Math.Round, Math.Floordll - meskipun Anda masih perlu gips setelah itu.
Jangan lupa bahwa rentang intjauh lebih kecil daripada kisaran double. Para pemain dari doubleke inttidak akan melempar pengecualian jika nilainya di luar rentang intdalam konteks yang tidak dicentang, sedangkan panggilan ke Convert.ToInt32(double)akan. Hasil pemeran (dalam konteks yang tidak dicentang) secara eksplisit tidak terdefinisi jika nilainya di luar kisaran.
intselalu 32 bit, terlepas dari apakah Anda menggunakan mesin 32 atau 64 bit.
intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
using System;di bagian atas file, pada titik mana itu bisa sajaintVal = Convert.ToInt32(Math.Floor(dblVal));
usingarahan.
jika Anda menggunakan gips, yaitu, (int)SomeDoubleAnda akan memotong bagian fraksional. Artinya, jika SomeDouble4.9999 hasilnya akan menjadi 4, bukan 5. Konversi ke int tidak membulatkan angka. Jika Anda ingin menggunakan pembulatanMath.Round
Ya kenapa tidak?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Menggunakan Convertkelas juga berfungsi dengan baik.
int someOtherInt = Convert.ToInt32(someDouble);
Convert.ToInt32 adalah cara terbaik untuk mengkonversi
Ini adalah contoh lengkapnya
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);
}
}
Jika Anda ingin membulatkan angka ke integer yang lebih dekat lakukan hal berikut:
i = (int) Math.Round(x / y); // Line replaced
Cara saya adalah:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
double_value = 0.1