Maison >développement back-end >C++ >Pourquoi la division Integer aboutit-elle à zéro?
zéro inattendu dans la division: un piège commun
Les zéros inattendus des calculs de division sont une source fréquente d'erreurs de programmation. Examinons un scénario commun pour comprendre pourquoi cela se produit.
Le problème:
Considérez ce code:
<code class="language-c#">decimal share = (18 / 58) * 100;</code>
Le résultat de cette division est étonnamment nul.
La solution:
La cause profonde est la division entier. Lors de la division des entiers, le résultat est tronqué (la partie fractionnaire est rejetée), conduisant à un résultat entier. Dans ce cas, 18 divisé par 58 est inférieur à 1, il est donc tronqué à 0.
Pour corriger cela, nous devons explicitement utiliser des valeurs décimales:
<code class="language-c#">decimal share = (18m / 58m) * 100m;</code>
Le suffixe m
désigne chaque nombre comme un littéral décimal, garantissant une division à virgule flottante et un résultat précis et non nul. Cela oblige le calcul à utiliser l'arithmétique à virgule flottante, fournissant la réponse fractionnaire précise.
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!