Rumah >pangkalan data >tutorial mysql >Mengapa Pengiraan Bahagian Saya Mengembalikan Sifar Daripada Nilai Perpuluhan?

Mengapa Pengiraan Bahagian Saya Mengembalikan Sifar Daripada Nilai Perpuluhan?

DDD
DDDasal
2025-01-20 17:37:08929semak imbas

Why Does My Division Calculation Return Zero Instead of a Decimal Value?

Menyelesaikan Masalah Keputusan Sifar daripada Bahagian Integer dalam Pengaturcaraan

Pengaturcaraan selalunya melibatkan operasi matematik, dan pembahagian tidak terkecuali. Hasil yang tidak dijangka, bagaimanapun, boleh menjadi masalah. Artikel ini memfokuskan pada isu biasa: operasi pembahagian mengembalikan sifar apabila keputusan bukan sifar dijangka.

Pertimbangkan senario di mana matlamatnya adalah untuk membahagikan nilai integer yang disimpan dalam pembolehubah @set1 dan @set2, menyimpan hasil dalam @weight. Kod secara tidak dijangka menghasilkan 0.

Punca utama terletak pada sifat pembolehubah: kedua-dua @set1 dan @set2 ialah integer. Ini menunjukkan kepada konsep kritikal pembahagian integer.

Pembahagian integer, tidak seperti pembahagian titik terapung, melakukan pembahagian pada dua integer dan hanya mengembalikan hasil bagi nombor bulat. Sebarang baki pecahan dipotong (dibuang).

Jika @set1 ialah 47 dan @set2 ialah 638, pembahagian integer menghasilkan 47 ÷ 638 = 0. Ini menerangkan keluaran sifar.

Untuk menyelesaikan masalah ini dan mendapatkan hasil perpuluhan yang betul (kira-kira 0.073667712), tukarkan @set1 dan @set2 kepada nombor titik terapung (terapung) secara eksplisit sebelum pembahagian. Terapung boleh mengendalikan bahagian pecahan.

Penyelesaian melibatkan pelarasan kod mudah ini:

<code class="language-sql">SET @weight = CAST(@set1 AS FLOAT) / CAST(@set2 AS FLOAT);</code>

Ringkasnya, memahami tingkah laku pembahagian integer adalah kunci kepada pengaturcaraan yang tepat. Menukar integer kepada terapung memastikan pengiraan yang tepat dan mengelakkan hasil sifar yang salah.

Atas ialah kandungan terperinci Mengapa Pengiraan Bahagian Saya Mengembalikan Sifar Daripada Nilai Perpuluhan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn