Maison >développement back-end >C++ >Pourquoi la division entière C donne-t-elle zéro et comment réaliser une division en virgule flottante ?

Pourquoi la division entière C donne-t-elle zéro et comment réaliser une division en virgule flottante ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-16 17:31:10459parcourir

Why Does C   Integer Division Result in Zero, and How Can Floating-Point Division Be Achieved?

Comprendre la division à virgule flottante en C

Bien qu'elle soit affectée à une variable double, la division (3/5) donne zéro dans le code fourni code dû à une division entière. C évalue par défaut les opérandes d'une expression de division sous forme d'entiers. Comme 3 et 5 sont tous deux des nombres entiers, leur division donne un résultat entier, qui est zéro.

Pour effectuer une division en virgule flottante, où le résultat conserve une précision fractionnaire, au moins un opérande doit être un littéral à virgule flottante. . Cela oblige le compilateur à traiter la division comme une opération à virgule flottante et à renvoyer un résultat à virgule flottante.

Dans le code original, pour obtenir la division à virgule flottante souhaitée, on pourrait le modifier comme suit :

#include <iostream>

int main(int argc, char** argv)
{
  double f = 3.0 / 5;  // Change both operands to floating-point literals
  std::cout << f;
  return 0;
}

En faisant d'un opérande (dans ce cas, 3.0) un littéral à virgule flottante, le compilateur effectuera une division en virgule flottante et le résultat reflétera correctement la fraction valeur.

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