casting entier de la division en double en C
Pourquoi le code
double slope = (double)changeY/changeZ
ensemble pente 0.0", quand dans le programme que j'ai, changeX = 20 et changeY = 10 (les deux ints)?
- Pouvez-vous montrer tout le code?
- Vous êtes à l'aide de changeY/*changeZ* dans l'exemple ci-dessus, au lieu de changeX. Êtes-vous sûr que c'est exact?
- Parce que vous faites quelque chose de mal. Cependant, nous ne pouvons pas vous dire exactement ce qu'il est, avec ce peu d'informations. Donner un minimum, mais complet, exemple de code, où l'on voit les déclarations et les définitions de
changeX
etc. et le calcul deslope
. - non - ce n'est pas nécessaire - l'OP du code avec la fonte devrait fonctionner comme prévu. Le problème se situe ailleurs.
- Qu'est-ce que
changeZ
, la valeur que vous êtes en divisant par? Si c'est assez grand, le résultat sera assez petit pour être affiché comme0.000000
avecprintf("%f\n", slope);
. - Peut-être changeZ si proche ou égal à l'infini.
- Double Possible de Integer division toujours zéro
Vous devez vous connecter pour publier un commentaire.
Il semble que vous utilisez le mauvais variable. Essayez ceci:
L'opérateur de cast () a une plus grande priorité que /. Cette expression est évalué comme:
changeY
à undouble
.changeX
à undouble
. Si l'un des opérandes estdouble
, puis de l'autre opérande obtient équilibré pour undouble
ainsi (ce qui est officiellement appelé "l'habitude de l'arithmétique conversions").changeY/changeX
.