Maison >développement back-end >C++ >Pourquoi la division Integer aboutit-elle à zéro?

Pourquoi la division Integer aboutit-elle à zéro?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-29 11:31:09873parcourir

Why Does Integer Division Result in Zero?

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!

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