Les pièges de MySQL dans la comparaison des valeurs à virgule flottante
Les calculs à virgule flottante dans MySQL peuvent conduire à des comparaisons erronées en raison de limitations de précision inhérentes. Pour résoudre ce problème, envisagez plutôt d'utiliser le type DECIMAL.
Imprécision intrinsèque de l'arithmétique à virgule flottante
Les nombres à virgule flottante sont stockés avec une précision limitée, ce qui peut introduire de légers inexactitudes lors des calculs. Par exemple, considérons le nombre 50,12 stocké sous forme de flottant dans MySQL :
CREATE TABLE users (points FLOAT); INSERT INTO users (points) VALUES (50.12);
Lorsque vous comparez cette valeur avec 12,75 à l'aide de l'opérateur >, MySQL renvoie "False", même si 50,12 est supérieur à 12,75.
SELECT COUNT(*) FROM users WHERE points > 12.75;
L'avantage DECIMAL
Pour éviter de telles incohérences, le type de données DECIMAL fournit une précision et une échelle fixes, garantissant l'exactitude des calculs et des comparaisons. Par exemple :
ALTER TABLE users MODIFY COLUMN points DECIMAL(6,2); UPDATE users SET points = 50.12; SELECT COUNT(*) FROM users WHERE points > 12.75;
Maintenant, la comparaison renvoie « Vrai », comme prévu.
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!