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

Calcul flottant et approximation

anaiogie
anaiogie
Niveau 10
10 janvier 2017 à 14:33:20

bonjour

je fais du calcul de point d'intersection dans l'espace

j'obtiens des valeurs du genre 5.55112e-15 ou -1.55112e-16 etc

des valeurs proches de 0 donc

est ce que c'est propre si je dis qu'en dessous d'un seuil je considère la valeur comme nulle ?

j'ai peur de me faire taper si je fais ça

ça se fait ou pas ?

anaiogie
anaiogie
Niveau 10
10 janvier 2017 à 14:35:03

dans l'idéal j'aimerais éviter de faire ça

en fait il se peut aussi que j'ai des valeur du style 4.0000000000005

du coup ensuite quand je fais une comparaison avec 4 ça passe pas

y a moyen de faire des choses exact sans passer par des seuil et approximation pas jolies ?

je suis en c++ je précise

Message édité le 10 janvier 2017 à 14:35:21 par anaiogie
LGV
LGV
Niveau 28
10 janvier 2017 à 15:40:39

On ne fait jamais des tests d'egalite "pure" entre valeurs flottantes ; on teste toujours l'egalite "a epsilon pres". C'est normal de proceder ainsi.

Pour rendre ca plus "propre" et leger a ecrire si tu en fais souvent, tu peux tres bien redefinir les operateurs pour integrer un facteur de precision necessaire et suffisant.

Message édité le 10 janvier 2017 à 15:41:07 par LGV
anaiogie
anaiogie
Niveau 10
10 janvier 2017 à 15:44:55

Le 10 janvier 2017 à 15:40:39 LGV a écrit :
On ne fait jamais des tests d'egalite "pure" entre valeurs flottantes ; on teste toujours l'egalite "a epsilon pres". C'est normal de proceder ainsi.

oui j'avais vu le fameux isSame(a, b) = |a-b| < epsilon

mais seulement dans de vieux algo de raytracing

je faisais pareil pour mon raytracer, mais là je fais un truc qui doit être le plus exact possible, du coup je me demandais si on faisait toujours pareil

par exemple, passer par du calcul symbolique comme fait certaines lib pour du calcul trigo

Pour rendre ca plus "propre" et leger a ecrire si tu en fais souvent, tu peux tres bien redefinir les operateurs pour integrer un facteur de precision necessaire et suffisant.

par contre ça je peux pas du coup, on peut pas redefinir operator== de "double" si je dis pas de betises, puisque c'est un type primitif

faudrait que je fasse une classe qui encapsule un double du coup, je vais voir

merci pour la réponse en tout cas

Message édité le 10 janvier 2017 à 15:47:13 par anaiogie
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment