Karena Anda tidak menggunakan sufiks apa pun, literal 13
dan 4
ditafsirkan sebagai bilangan bulat:
Manual :
Jika literal tidak memiliki akhiran, ia memiliki pertama jenis ini yang nilainya dapat diwakili: int
, uint
, long
, ulong
.
Dengan demikian, karena Anda menyatakan 13
sebagai integer, pembagian integer akan dilakukan:
Manual :
Untuk operasi bentuk x / y, resolusi kelebihan operator biner diterapkan untuk memilih implementasi operator tertentu. Operan dikonversi ke tipe parameter dari operator yang dipilih, dan tipe hasilnya adalah tipe pengembalian dari operator.
Operator divisi yang ditentukan sebelumnya tercantum di bawah ini. Semua operator menghitung hasil bagi x dan y.
Divisi integer:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
Dan pembulatan terjadi:
Divisi ini membulatkan hasil menjadi nol, dan nilai absolut dari hasilnya adalah bilangan bulat terbesar yang mungkin lebih kecil dari nilai absolut hasil bagi dari dua operan. Hasilnya nol atau positif ketika kedua operan memiliki tanda yang sama dan nol atau negatif ketika kedua operan memiliki tanda yang berlawanan.
Jika Anda melakukan hal berikut:
int x = 13f / 4f;
Anda akan menerima kesalahan kompilator, karena divisi floating-point ( /
operator dari13f
) menghasilkan float, yang tidak dapat dilemparkan ke int secara implisit.
Jika Anda ingin divisi menjadi divisi floating-point, Anda harus menjadikan hasilnya sebagai float:
float x = 13 / 4;
Perhatikan bahwa Anda masih akan membagi bilangan bulat, yang secara implisit akan dilemparkan ke float: hasilnya akan menjadi 3.0
. Untuk secara eksplisit mendeklarasikan operan sebagai float, menggunakan f
akhiran ( 13f
, 4f
).
integer
divisi bukanfloating point
divisi.