Opérateur de division dans PostgreSQL : comprendre la troncature d'entiers et les calculs à virgule flottante
Dans PostgreSQL, les opérations de division (/) peuvent conduire à des résultats inattendus lorsque vous travaillez avec des valeurs entières. Comprendre le comportement sous-jacent de la division entière est crucial pour éviter des calculs incorrects.
Considérez la requête suivante :
SELECT dev_cost / sell_cost FROM software
Où dev_cost est 16 000 et sell_cost est 7 500. Vous pourriez vous attendre à ce que le résultat soit 3, mais il renvoie 2. En effet, la division entière tronque toute partie fractionnaire du résultat.
Pour obtenir la valeur souhaitée, vous devez convertir au moins une des valeurs en type à virgule flottante (par exemple, décimal) ou utiliser l'opérateur :: pour la convertir à la volée :
SELECT CAST(dev_cost AS DECIMAL) / sell_cost FROM software
SELECT dev_cost::DECIMAL / sell_cost FROM software
Ces requêtes renverront 2,133, qui est le résultat réel de la division.
De plus, vous pouvez utiliser le ceil() pour arrondir le résultat à l'entier le plus proche :
SELECT CEIL(dev_cost::DECIMAL / sell_cost) FROM software
Cette requête renverra 3, qui est la quantité de logiciel souhaitée pour récupérer le coût de développement.
C'est important être conscient de ce comportement lors de l'exécution d'opérations de division et utiliser les types de données et la conversion appropriés pour garantir des calculs précis.
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!