Maison >base de données >tutoriel mysql >Pourquoi mon calcul de division renvoie-t-il zéro au lieu d'une valeur décimale ?

Pourquoi mon calcul de division renvoie-t-il zéro au lieu d'une valeur décimale ?

DDD
DDDoriginal
2025-01-20 17:37:08879parcourir

Why Does My Division Calculation Return Zero Instead of a Decimal Value?

Dépannage des résultats zéro de la division entière dans la programmation

La programmation implique souvent des opérations mathématiques, et la division ne fait pas exception. Des résultats inattendus peuvent toutefois s’avérer problématiques. Cet article se concentre sur un problème courant : les opérations de division renvoyant zéro lorsqu'un résultat non nul est anticipé.

Considérons un scénario où l'objectif est de diviser les valeurs entières stockées dans les variables @set1 et @set2, en enregistrant le résultat dans @weight. Le code produit de manière inattendue 0.

La cause fondamentale réside dans la nature des variables : @set1 et @set2 sont des nombres entiers. Cela souligne le concept critique de division entière.

La division entière, contrairement à la division à virgule flottante, effectue une division sur deux entiers et renvoie uniquement le quotient numérique entier. Tout reste fractionnaire est tronqué (rejeté).

Si @set1 vaut 47 et @set2 vaut 638, la division entière donne 47 ÷ 638 = 0. Cela explique la sortie nulle.

Pour résoudre ce problème et obtenir le résultat décimal correct (environ 0,073667712), convertissez explicitement @set1 et @set2 en nombres à virgule flottante (flotteurs) avant la division. Les flotteurs peuvent gérer des parties fractionnaires.

La solution implique ce simple ajustement de code :

<code class="language-sql">SET @weight = CAST(@set1 AS FLOAT) / CAST(@set2 AS FLOAT);</code>

En résumé, comprendre le comportement d’une division entière est la clé d’une programmation précise. La conversion d'entiers en flottants garantit des calculs précis et évite des résultats nuls erronés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn