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

[C] additionner int et float

vutqy
vutqy
Niveau 10
17 septembre 2011 à 14:30:27

Bonjour, grand débutant en C j'aimerais pouvoir additionner un int et un float.

Ce que je fais :

int sec = start_time_.tv_sec;
int usec = start_time_.tv_usec;
float temps = sec + usec / 1000000;
printf("t %d %d\n", sec, usec);
printf("%f\n", temps);

Ce que j'obtiens :

1316262618 109375
1316262656.000000

Ce que j'attends :

1316262618 109375
1316262618.109375

Qu'est-ce qui ne va pas svp ? :-(

chris_27
chris_27
Niveau 10
17 septembre 2011 à 14:36:28

L'addition est correcte. C'est ta division qui te tue.

109375 / 1000000 ça donne 0. Avec des entiers, on fait une division entière (et le résultat est le quotient de cette division).

Toi, tu veux faire :
109375 / 1000000.
:d) note le . à la fin de 1000000. qui force à faire la division en flottant.
Cette fois tu auras (modulo l'arrondi) le résultat voulu.

vutqy
vutqy
Niveau 10
17 septembre 2011 à 14:43:46

:content: Merci

Nightmarez
Nightmarez
Niveau 9
17 septembre 2011 à 18:28:22

Tu devrais faire
float temps = (float)sec + (float)usec / 1000000.;

chris_27
chris_27
Niveau 10
17 septembre 2011 à 19:23:34

Non. Les calculs seront plus précis sans les casts explicites en float, vu qu'ils seront faits en double à cause du point que j'ai fais rajouté

Nightmarez
Nightmarez
Niveau 9
18 septembre 2011 à 18:25:20

Euh, ca ne change strictement rien vu qu'ils sont recastes en float derriere pour stocker le resultat dans Temps, donc tu perds quand meme ta precision entre float et double.

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