Programme c#

TESCHAN66 -  
ElectroRobotica Messages postés 2 Statut Membre -

bonjour,je dois écrire un code qui doit convertir une température de 94 degrés fahreneit en dergrés  celsius,voilà mon code :

int fahreneit = 94;

decimal celsius = (fahreneit - 32) * (5/9);

Console.WriteLine("la température en celsius est :" + celsius);

le problême quand je le compile il me marque : la température en celsius est 0.Pouvez vous m'aider,merci

2 réponses

T3chN0g3n Messages postés 6001 Statut Membre 1 186
 

Salut,

La division d'entier, en l'occurence 5 / 9 = 0.56 retourne un nombre entier, (l'arrondie se fait à l'entier inférieur, donc 0). Tu multiplies la température par ce zéro, Donc le résultat est 0.

Pour avoir le résultat avec un nombre à virgule, il faut que les opérandes le soient eux-mêmes (au moins un des deux), tu as des exemples avec différentes syntaxes ici :

https://learn.microsoft.com/fr-fr/dotnet/csharp/language-reference/operators/arithmetic-operators#division-operator-

Tu peut écrire :

(5.0/9.0)
//ou
((float)5/9)
//ou encore
(5f/9f)

Cdlt.

0
brucine Messages postés 23001 Statut Membre 3 572
 

Bonjour,

Qui plus est et tant qu'à faire propre, il y a lieu d'écrire Fahrenheit avec le h manquant et un F majuscule parce que c'est le nom du mec qui l'a inventé, même chose pour la sortie écran en degrés Celsius pour la même raison et contrairement au kelvin qui bien que lui aussi du à un mec n'est pas un degré mais une unité qui s'écrit en minuscules.
 

0
ElectroRobotica Messages postés 2 Statut Membre
 

Hello,

L'erreur réside dans le mauvais choix du type des variables pour le calculs dans CSharp. Quand vous écrivez (5/9), cela donne une division entière car 5 et 9 sont tous deux des entiers.

Pour corriger cela, vous devez changer votre code de calcul de la valeur celsius comme suit:

decimal celsius = (fahrenheit - 32) * (5.0m / 9.0m);

Pour encore mieux comprendre ce mécanisme, je vous invite à consulter la rubrique variables ici : https://electro-robot.com/programmation/le-codage

Cdt.


0