DUBBEL kolumner är inte samma som DECIMAL-kolumner, och du kommer att få problem om du använder DUBBLA kolumner för finansiell data.
DOUBLE är faktiskt bara en dubbelprecisionsversion (64 bitar istället för 32 bitars) av FLOAT . Flyttal är ungefärliga representationer av reella tal och de är inte exakta. Faktum är att enkla siffror som 0,01 inte har en exakt representation i FLOAT- eller DOUBLE-typer.
DECIMAL-kolumner är exakta representationer, men de tar upp mycket mer utrymme för ett mycket mindre antal möjliga tal. För att skapa en kolumn som kan innehålla värden från 0,0001 till 99,9999 som du frågade skulle du behöva följande uttalande
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
Kolumndefinitionen följer formatet DECIMAL(M, D) där M är det maximala antalet siffror (precisionen). ) och D är antalet siffror till höger om decimaltecknet (skalan ).
Det betyder att det föregående kommandot skapar en kolumn som accepterar värden från -99.9999 till 99.9999. Du kan också skapa en OSIGNERAD DECIMAL kolumn, från 0,0000 till 99,9999.
Som ett exempel, om du vill ha en kolumn som accepterar värden från -9999,99 till 9999,99 skulle kommandot vara DECIMAL(6,2)
. Som du kan se använder du fortfarande en precision av 6, men tillåt bara en skala av 2.
För mer information om MySQL DECIMAL de officiella dokument är alltid en stor resurs.
Tänk på att all denna information gäller för versioner av MySQL 5.0.3 och senare. Om du använder tidigare versioner borde du verkligen uppgradera.
Uppdatering på MySQL 8.0.17+
Osignerad är utfasad för FLOAT, DUBBEL och DECIMAL kolumner.