Saya tahu SQL 92 adalah standar lama tetapi saya cukup yakin ini tidak berubah dalam versi standar SQL yang lebih baru.
SQL 92 mendefinisikan
Pertanyaannya adalah:0.1
dan 0.2
dalam kueri SELECT 0.1 + 0.2
perkiraan atau tepat?
Jawabannya:tidak tahu juga databasenya tidak tahu.
Jadi, database akan menjalankan implementasi yang ditentukan untuk mesin MySQL dan MariaDB, ini akan ditangani sebagai DECIMAL(1,1)
tipe data
Mengapa jawaban Nick mengembalikan nilai yang benar atau yang diharapkan dengan definisi tabel
SQL 92 juga mendefinisikan
Yang telah dilakukan Nick dengan mendefinisikan tipe data dalam tabel.
Mengedit jawaban ini karena saya menemukan sesuatu di manual MySQL hari ini.
Kueri
SELECT (0.1 + 0.2) = 0.3
Hasil menjadi 1
di MySQL yang berarti MySQL menggunakan perhitungan numerik yang tepat dan menggunakan Matematika Presisi
jika memungkinkan. Jadi MySQL tahu bahwa 0.1
, 0.2
dan 0.3
adalah tipe data yang tepat di sini dan perlu menghitung dengan tepat, seperti yang saya harapkan sebelum pengeditan ini.
Arti kueri
SELECT (0.1 + 0.2) = 0.3
akan berjalan di bawah tenda kurang lebih seperti
SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));