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

binaire sur un nombre à virgule ??

Zalhera
Zalhera
Niveau 10
18 août 2007 à 14:10:22

Bonjour tout le monde :-)

Voilà je débute la programmation en java, et je vois qu´il y aurait un problème avec le test d´égalité "==" sur les nombres approchés (de type float ou double, donc).

Par exemple, il y aurait un problème pour 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 == 0.8 puisque ça renvoie "false".
On me conseille de passer en binaire pour comprendre le problème, mais je ne sais pas passer de la base 10 à 2 sur des nombres à virgule moi ...

Merci pour votre aide :ok:

lockless
lockless
Niveau 5
18 août 2007 à 14:45:23

Y´a pas à chercher à voir la représentation binaire du nombre, le seul problème c´est qu´on travaille sur des approximations pour les double / float, donc par exemple ici, sur certaines machines 0.1 sera une approximation et vaudra par exemple 0.10000000001, et sur d´autres machines la valeurs sera différente. Donc il faut absolument éviter la comparaison de nombre décimaux, si tu veux éventuellement voir si les valeurs sont proches tu peux vérifier que la différence entre les 2 valeurs ne dépasse pas un certain seuil.

Zalhera
Zalhera
Niveau 10
18 août 2007 à 15:24:40

Ok, merci bien. :ok:

godrik
godrik
Niveau 30
18 août 2007 à 20:56:34

le seuil qu´il faut prendre a été standardisé et s´appele epsilon.

Notes: dans certaines applications (bancaire, fusée...) les erreurs de calcul ne sont pas acceptable. On travaille alors soit en entier a virgule fixe soit a précision "infinie"

saleGauss
saleGauss
Niveau 9
18 août 2007 à 21:00:20

Godrik pour les précisions infinie, en fait ils gardent des formes de quotiens, c´est ca ?

godrik
godrik
Niveau 30
18 août 2007 à 21:01:40

tu fais du calcul formel et tu garde la forme exacte jusqu´a l´evaluation que tu demande a précision fini.

saleGauss
saleGauss
Niveau 9
18 août 2007 à 21:58:26

c´est bien ce qu´il me semblait, merci

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