Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana MySQL melakukan perhitungan matematika penambahan floating point?

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));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan beberapa nilai dalam satu sel MYSQL

  2. MySQLDumper:Alat Pencadangan Database MySQL Berbasis PHP dan Perl

  3. Bagaimana cara mengubah jam kerja?

  4. bagaimana cara mempercepat penyisipan di neo4j dari mysql?

  5. Kesalahan fungsi nilai berikutnya