Apa cara terbaik untuk mengonversi a double
menjadi int
? Haruskah gips digunakan?
c#
.net
casting
type-conversion
pengguna496949
sumber
sumber
etc.
:)Jawaban:
Anda dapat menggunakan gips jika Anda ingin perilaku truncate-zero-zero default. Atau, Anda mungkin ingin menggunakan
Math.Ceiling
,Math.Round
,Math.Floor
dll - meskipun Anda masih perlu gips setelah itu.Jangan lupa bahwa rentang
int
jauh lebih kecil daripada kisarandouble
. Para pemain daridouble
keint
tidak akan melempar pengecualian jika nilainya di luar rentangint
dalam konteks yang tidak dicentang, sedangkan panggilan keConvert.ToInt32(double)
akan. Hasil pemeran (dalam konteks yang tidak dicentang) secara eksplisit tidak terdefinisi jika nilainya di luar kisaran.sumber
int
selalu 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));
using
arahan.jika Anda menggunakan gips, yaitu,
(int)SomeDouble
Anda akan memotong bagian fraksional. Artinya, jikaSomeDouble
4.9999 hasilnya akan menjadi 4, bukan 5. Konversi ke int tidak membulatkan angka. Jika Anda ingin menggunakan pembulatanMath.Round
sumber
Ya kenapa tidak?
Menggunakan
Convert
kelas juga berfungsi dengan baik.sumber
Convert.ToInt32
adalah cara terbaik untuk mengkonversisumber
Cara terbaik adalah dengan menggunakan
Convert.ToInt32
. Ini cepat dan juga putaran dengan benar.Mengapa membuatnya lebih rumit?
sumber
Ini adalah contoh lengkapnya
Jika Anda ingin membulatkan angka ke integer yang lebih dekat lakukan hal berikut:
sumber
Saya pikir cara terbaik adalah
Convert.ToInt32
.sumber
int myInt = (int) Math.Ceiling (myDouble);
sumber
Cara saya adalah:
sumber
double_value = 0.1
ketika Anda ingin mengirimkannya ke label, atau sesuatu, dan Anda tidak ingin komponen fraksional, ini adalah cara terbaik
jika Anda ingin dengan hanya 2, dan selalu seperti itu
sumber