Maison > base de données > tutoriel mysql > Pourquoi une division entière donne-t-elle zéro au lieu d'une valeur décimale ?

Pourquoi une division entière donne-t-elle zéro au lieu d'une valeur décimale ?

Mary-Kate Olsen
Libérer: 2025-01-20 17:31:12
original
280 Les gens l'ont consulté

Why Does Integer Division Yield Zero Instead of a Decimal Value?

Résultat zéro inattendu de la division entière

Lors d'un récent projet de programmation, le code suivant a produit un résultat inattendu :

<code>PRINT @set1
PRINT @set2

SET @weight= @set1 / @set2;
PRINT @weight</code>
Copier après la connexion

La division a donné 0 au lieu des 0,073667712 attendus.

La cause profonde : les types de données entiers

Le problème vient des types de données @set1 et @set2. Les deux sont des nombres entiers, capables de stocker uniquement des nombres entiers. La division entière tronque toujours la partie décimale, ce qui donne un résultat entier. Par conséquent, 47 divisé par 638 donne 0.

Solutions

Pour obtenir le résultat décimal correct, deux approches s'offrent à vous :

  1. Définir les variables sous forme de flottants : Déclarez @set1 et @set2 sous forme de nombres à virgule flottante (flotteurs). Cela permet aux variables de contenir des valeurs décimales, garantissant une division décimale précise.

  2. Casting de type pendant le calcul : Si la modification des types de données variables n'est pas possible, utilisez l'opérateur CAST pour convertir temporairement les entiers en flottants pendant la division :

<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>
Copier après la connexion

L'une ou l'autre méthode garantit que l'opération de division renvoie la valeur décimale attendue, résolvant ainsi le problème du résultat zéro inattendu.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal