J'ai besoin d'aide avec un programme de conversion de Fahrenheit en Celsius dans C. Mon code ressemble à ce 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. p> p>
7 Réponses :
5/9 entraînera une division entière, qui va = 0 p>
Essayez 5.0 / 9.0 code> à la place. p>
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 code> et 32 code> 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 I> est plus important que Éviter I> en particulier en C, car des conversions implicites, des promotions de type, etc. sont un fait de la vie en programmation C.
écrire 5/9.0 code> au lieu de 5/9 - cette force double division p>
Merci pour l'aide de tous, 5.0 / 9.0 a fait l'affaire, passant également à la double activité. Merci encore
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. P>
Essayez 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. P> Celsius = ((double) 5/9) * (Fahrenheit-32); code> ou vous pouvez utiliser 5.0. P>
Vous problème est ici: 5/9 code> vous donnera toujours 0 code>. Utiliser ( 5.0 / 9.0 code>) à la place. P> p>
Lorsque vous traitez avec des flotteurs, il doit être de 5,0 ° C / 9.0F. P>
Lorsque vous traitez avec des doubles, il doit être 5,0 / 9,0. P>
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. P>
Vous pouvez utiliser Vous pouvez également vérifier C Programme C Pour convertir Fahrenheit en Celsius P> 5 code> et 9 code> est d' int code> type
Par conséquent, 5/9 code> résultera toujours 0 code>. p>
5/9,0 code> ou 5.0 / 9 code> ou 5.0 / 9.0 code> p>
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