Il y a quelque chose qui ne va pas dans votre code ou quelque chose qui ne va pas avec l'iPhone. Le code suivant:
#include<stdio.h>
#include<math.h>
int main (void) {
printf ("%f\n", asin(1));
printf ("%f\n", asin(0.5));
float rim;
rim = asin(1) + asin (0.5);
printf ("%f\n", rim);
return 0;
}
produit un plus sensible:
1.570796
0.523599
2.094395
En d'autres termes, à la fois votre asin(0.5)
et votre somme sont incorrects.
Etes-vous sûr que vous ne l'avez pas fait quelque chose comme:
rim = asin(1 + asin (0.5));
Ce sera en effet vous donner NaN.
mise à jour en fonction de votre information ajoutée:
Votre code fonctionne toujours très bien dans mon environnement:
#include<stdio.h>
#include<math.h>
int main (void) {
float jk = 7700;
//jk = 7700/10500;
jk = jk/10500;
printf ("%f\n", asin(jk));
float hg = 8000;
hg = hg/9500;
printf ("%f\n", asin(hg));
float rim;
rim = asin(jk) + asin (hg);
printf ("%f\n", rim);
return 0;
}
délivrer en sortie:
0.823212
1.001175
1.824387
Vous remarquerez que je changé jk = 7700/10500
à jk = jk/10500
puisque ce dernier vous a donné 0 en raison de l'entier divisio n, mais je n'ai pas NaN dans les deux cas. Vous devez vraiment poster un programme complet qui montre le comportement errant.
J'ai reçu une sortie correcte (ou au moins valide), est-ce votre code actuel? Et je suis asin (0.5) = 0.5235 ... – Vladimir
La seconde valeur est 0.8 sur votre machine ?? Courez-vous ceci sur Windows? : P – Bourne
@Alexei, vous devez poster le code _actual_. Comme tout le monde l'a dit, ça semble fonctionner (d'accord sur d'autres plateformes). – paxdiablo