CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

aide math programmation

akumabeelz
akumabeelz
Niveau 10
11 décembre 2013 à 22:46:39

bonjour, j'ai un petit probleme avec les math
quand j'affiche cos 90 degré sa me met -0 et je voudrai que sa m'affiche le 0 sans le signe -
comment faire svp
j'ai fait
int x;
int angle;
int x1;

x = atoi(av[1]);
angle = (x * M_PI)/180
x1 = cos(angle);
printf("%d\n", x1);

en compilant bien avec la lib math mais le resultat lorsque l'angle vaut 90 est 0 et non -0

chris_27
chris_27
Niveau 10
11 décembre 2013 à 22:48:31

Tu le laisses te donner -0 parce que c'est pareil.

lokilok
lokilok
Niveau 16
11 décembre 2013 à 22:50:41

Déjà je te conseillerais de ne pas utiliser d'entier pour ça, tu risque pas du tout d'avoir de résultat correcte.

akumabeelz
akumabeelz
Niveau 10
11 décembre 2013 à 22:50:44

oui mais je le veux sans le -0 pck je fai plusieur calcul dans ma matrice et quand ya plein de -0 c'est chiant j'aimerai avoir un moyen de les enlevé si c possible lorsque l'angle vaut 90

akumabeelz
akumabeelz
Niveau 10
11 décembre 2013 à 22:51:41

euh oui en fait j'utilise pluôt des float pour calcul de cos

lokilok
lokilok
Niveau 16
11 décembre 2013 à 22:52:47

Et pour l'angle aussi sinon ça sert a rien.

chris_27
chris_27
Niveau 10
11 décembre 2013 à 22:52:49

C'est chiant, mais tant que tu ne sauras pas expliquer proprement pourquoi tu as -0 et pourquoi on s'en fout, laisse ces -0 tranquille./

lokilok : s'il a "-0", il n'a surement pas fait le printf qu'il a indiqué. :-)))

lokilok
lokilok
Niveau 16
11 décembre 2013 à 22:54:04

Je sais pas je me suis arrêté de lire quand j'ai vu qu'il utilisait des int.

chris_27
chris_27
Niveau 10
11 décembre 2013 à 22:56:17

L'exemple qu'il donne est effectivement bien foireux maintenant que tu le dis. J'avais pas fait gaffe au fait que x1 c'était un int. :-)

akumabeelz
akumabeelz
Niveau 10
11 décembre 2013 à 23:05:18

je ne sais pas justement pourquoi j'ai -0 lorsque l'angle vaut 90 je dois avoir 0 et non -0 ..
j'ai modifier mon printf et mis des float a la place des int

float angle;
107 │ float x;
108 │
109 │ x = atoi(av[1]);
110 │ angle = (x * M_PI)/180;
111 │ x1 = cosf(angle);
112 │ x2 = -sinf(angle);
113 │ y1 = sinf(angle);
114 │ y2 = cosf(angle);
115 │ printf("%4.3f\n", x1);
116 │ printf("%4.3f\n", x2);
117 │ printf("%4.3f\n", y1);
118 │ printf("%4.3f\n",y2);

akumabeelz
akumabeelz
Niveau 10
11 décembre 2013 à 23:07:01

j'ai toujours le -0.000 :hum:
svp j'ai absolument besoin de savoir comment enlever ce signe -

chris_27
chris_27
Niveau 10
11 décembre 2013 à 23:14:26

Non, tu n'en as pas besoin./

papy386
papy386
Niveau 10
12 décembre 2013 à 06:02:15

Bonjour

La solution c'est de prendre le résultat dans un unsigned (donc de 0 a x).

godrik
godrik
Niveau 30
12 décembre 2013 à 06:33:12

Ca change quoi d'avoir 0 ou -0? Au final ca fait la meme chose.

papy386
papy386
Niveau 10
12 décembre 2013 à 07:02:12

Sa change rien au niveau mathématique du sens. Mais a l'affichage sa donne un caractère de trop, et d’ailleurs il me semble que -0 sa s'écrit pas!

rk_yurkor
rk_yurkor
Niveau 59
12 décembre 2013 à 08:23:44

juste au printf tu écrit : printf("%d",(int)ma variable);

rk_yurkor
rk_yurkor
Niveau 59
12 décembre 2013 à 08:25:25

et tu peut même reprendre ton code du début , tu change juste le printf comme dans mon précédent message

rk_yurkor
rk_yurkor
Niveau 59
12 décembre 2013 à 08:28:35

pardon : unsigned int a. la place de juste int

chris_27
chris_27
Niveau 10
12 décembre 2013 à 18:26:13

papy386: -0 ça s'écrit quand on fait du calcul numérique. Et il y a une très bonne raison pour que la réponse soit -0 et pas 0, car la valeur réellement calculée est belle et bien négative.

rk_yurkor: Bravo champion. Tu viens de prouver que un cast = une connerie. Parce que bon, l'OP a quand même pour idée de passer un angle en paramètre à son code, et le jour où il va passer 60°, je suis sûr qu'il va adorer voir que cos(60°) = 0. :bravo:

Maintenant je passe un coup de gueule général. Les gens se plaignent que le calcul numérique sur ordinateur c'est de la merde. Et bien la lecture de ce thread suffit à voir que cette merde elle est entre la chaise et le clavier, pas dans le CPU/FPU.

Pseudo supprimé
Pseudo supprimé 13 décembre 2013 à 22:18:13

Chris_27 :d) Bah, à la base, si on ne comprend pas que je représenter un ensemble infini de valeurs avec un nombre fini de bits pose de "légers" problèmes assez rapidement et qu'on n'a jamais eu la curiosité de se pencher sur la représentation en nombre flottants, c'est vrai qu'on pose beaucoup de questions bêtes. Même avec des ingés, ça m'arrive de devoir expliquer ça :(

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment