Ini secara teknis bergantung pada bahasa, tetapi hampir semua bahasa memperlakukan subjek ini dengan sama. Jika ada jenis ketidakcocokan antara dua tipe data dalam ekspresi, sebagian besar bahasa akan mencoba mentransmisikan data di satu sisi=
untuk mencocokkan data di sisi lain sesuai dengan sekumpulan aturan yang telah ditentukan.
Saat membagi dua bilangan dengan tipe yang sama (integer, double, dll.), Hasilnya akan selalu sama (jadi 'int / int' akan selalu menghasilkan int).
Dalam hal ini Anda memiliki
double var = integer result
yang melemparkan hasil integer menjadi ganda setelah perhitungan dalam hal ini data pecahan sudah hilang. (kebanyakan bahasa akan melakukan pengecoran ini untuk mencegah ketidakakuratan jenis tanpa menimbulkan pengecualian atau kesalahan).
Jika Anda ingin mempertahankan hasil ganda, Anda akan ingin menciptakan situasi yang Anda miliki
double var = double result
Cara termudah untuk melakukannya adalah dengan memaksa ekspresi di sisi kanan persamaan menjadi dua kali lipat:
c = a/(double)b
Pembagian antara integer dan double akan menghasilkan transmisi integer ke double (perhatikan bahwa ketika melakukan matematika, compiler akan sering "upcast" ke tipe data yang paling spesifik untuk mencegah kehilangan data).
Setelah upcast, a
akan berakhir sebagai double dan sekarang Anda memiliki pembagian antara dua double. Ini akan membuat divisi dan tugas yang diinginkan.
LAGI, harap dicatat bahwa ini khusus bahasa (dan bahkan dapat menjadi spesifik kompiler), namun hampir semua bahasa (tentu saja semua yang dapat saya pikirkan di luar kepala saya) memperlakukan contoh ini secara identik.