Division (/) Inexactitude dans PostgreSQL
Lors de l'exécution d'une division dans PostgreSQL, il est important de prendre en compte les types de données impliqués pour garantir des résultats précis . Dans le cas décrit, où l'objectif est de déterminer la quantité de logiciels à vendre pour récupérer les coûts de développement, une division entière peut conduire à des résultats incorrects.
Dans la requête fournie, dev_cost et sell_cost sont tous deux de types entiers. La division entière tronque le résultat vers zéro, ce qui signifie que la division de 16 000 par 7 500 donne 2 au lieu du 3 attendu.
Pour obtenir un résultat précis, au moins une des valeurs doit être convertie en virgule flottante type tel que float ou décimal. Alternativement, la syntaxe ::decimal peut être utilisée pour convertir explicitement et implicitement le dev_cost en décimal. Cela contraint la division en une opération à virgule flottante, ce qui entraîne une division non tronquée.
Considérez la requête modifiée suivante :
select dev_cost::decimal / sell_cost from software ;
Alternativement, la fonction ceil() peut être utilisée pour arrondir le résultat à l'entier le plus proche :
select ceil(dev_cost::decimal / sell_cost) from software ;
En utilisant ces techniques, des résultats de division précis peuvent être obtenus, garantissant ainsi que les calculs commerciaux basées sur les requêtes de base de données sont valables.
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!