8
votes

C Programme de convertir Fahrenheit en Celsius imprime toujours zéro

J'ai besoin d'aide avec un programme de conversion de Fahrenheit en Celsius dans C. Mon code ressemble à ce xxx

Chaque fois que je l'exécute, le résultat est de 0,000000. Je sais que je manque quelque chose mais je ne peux pas comprendre quoi.

c

2 commentaires

Vous travaillez avec des entiers, vous devez travailler avec des flotteurs ou des doubles.


Note latérale, les compilateurs considèrent généralement 5.0 un double. Vous devez dire 5.0f pour faire des calculs de valeur de flotteur. Semble plus pertinent pour mobile


7 Réponses :


24
votes

5/9 entraînera une division entière, qui va = 0

Essayez 5.0 / 9.0 à la place.


4 commentaires

Techniquement, 5/9,0 suffit


@Foobah: Vous êtes bien sûr correct. J'ai tendance à l'appliquer à la fois pour des cas comme celui-ci pour ma propre bonne pratique.


@Foo Bah - Peut-être, mais c'est une bonne politique d'éviter autant de conversions implicites que possible. Moins le compilateur change de types pour vous, moins vous aurez surprises.


@ T.e.d. Dans ce cas, fahrenheit et 32 devra se lancer à deux fois ;-) En général, de telles expressions auraient une quantité ridicule de moulages si nous devions éviter " conversions implicites "partout. IMHO, Compréhension est plus important que Éviter en particulier en C, car des conversions implicites, des promotions de type, etc. sont un fait de la vie en programmation C.



0
votes

écrire 5/9.0 au lieu de 5/9 - cette force double division


1 commentaires

Merci pour l'aide de tous, 5.0 / 9.0 a fait l'affaire, passant également à la double activité. Merci encore



0
votes

Vous devez utiliser de l'arithmétique à virgule flottante afin d'effectuer ce type de formules avec une précision. Vous pouvez toujours convertir le résultat final à un entier, si nécessaire.


0 commentaires

2
votes

Essayez Celsius = ((double) 5/9) * (Fahrenheit-32); ou vous pouvez utiliser 5.0.

Le fait est que "/" regarde le type d'opérande. Dans le cas de INT, le résultat est également un int, vous avez donc 0. Lorsque 5 est traité comme double, la division sera alors exécutée correctement.


0 commentaires

9
votes

Vous problème est ici: xxx

5/9 vous donnera toujours 0 . Utiliser ( 5.0 / 9.0 ) à la place.


0 commentaires

0
votes

Lorsque vous traitez avec des flotteurs, il doit être de 5,0 ° C / 9.0F.

Lorsque vous traitez avec des doubles, il doit être 5,0 / 9,0.

Lorsque vous traitez avec des entiers, des restes / fractions sont toujours tronqués. 5/9 résulte de 0 à 1, il est donc tronqué à 0 à chaque fois. Qui multiplie l'autre côté à zéro et zullifie complètement votre réponse à chaque fois.


0 commentaires

0
votes

5 et 9 est d' int type
Par conséquent, 5/9 résultera toujours 0 .

Vous pouvez utiliser 5/9,0 ou 5.0 / 9 ou 5.0 / 9.0

Vous pouvez également vérifier C Programme C Pour convertir Fahrenheit en Celsius


0 commentaires