Rumah >pangkalan data >tutorial mysql >Mengapa Bahagian Integer Menghasilkan Sifar Daripada Nilai Perpuluhan?

Mengapa Bahagian Integer Menghasilkan Sifar Daripada Nilai Perpuluhan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 17:31:12349semak imbas

Why Does Integer Division Yield Zero Instead of a Decimal Value?

Keputusan Sifar Tidak Dijangka daripada Bahagian Integer

Semasa projek pengaturcaraan baru-baru ini, kod berikut menghasilkan hasil yang tidak dijangka:

<code>PRINT @set1
PRINT @set2

SET @weight= @set1 / @set2;
PRINT @weight</code>

Bahagian tersebut menghasilkan 0 dan bukannya 0.073667712 yang dijangkakan.

Punca Punca: Jenis Data Integer

Masalahnya berpunca daripada jenis data @set1 dan @set2. Kedua-duanya adalah integer, mampu menyimpan nombor bulat sahaja. Pembahagian integer sentiasa memotong bahagian perpuluhan, menghasilkan keputusan nombor bulat. Oleh itu, 47 dibahagikan dengan 638 menghasilkan 0.

Penyelesaian

Untuk mendapatkan hasil perpuluhan yang betul, dua pendekatan tersedia:

  1. Takrifkan Pembolehubah sebagai Terapung: Isytiharkan @set1 dan @set2 sebagai nombor titik terapung (terapung). Ini membolehkan pembolehubah menyimpan nilai perpuluhan, memastikan pembahagian perpuluhan yang tepat.

  2. Jenis Casting Semasa Pengiraan: Jika mengubah jenis data pembolehubah tidak dapat dilaksanakan, gunakan operator CAST untuk menukar integer kepada terapung sementara semasa pembahagian:

<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>

Mana-mana kaedah menjamin operasi bahagi mengembalikan nilai perpuluhan yang dijangka, menyelesaikan isu hasil sifar yang tidak dijangka.

Atas ialah kandungan terperinci Mengapa Bahagian Integer Menghasilkan 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