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

Mengapa Bahagian Integer Menghasilkan Sifar Daripada Nilai Perpuluhan?

Mary-Kate Olsen
Lepaskan: 2025-01-20 17:31:12
asal
281 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan