RACINES D'UNE EQUATION DU SECOND DEGRÉ

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
- - Dernière réponse : cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
- 31 oct. 2007 à 20:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44556-racines-d-une-equation-du-second-degre

Afficher la suite 
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2 -
ok
luhtor
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
4 -
Petite rectification pour JCDjcd :)
Le terme "flottant" est propre au C/C++, dans d'autres langages, c'est "real". Je préfère de loin le terme "réel" mais c'est du détail.
Donc bref "real = flottant (ou double)", mais le problème reste le meme.
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2 -
mais je crois que l'on est parfaitement d'accord :
moi je propose seulement que le teste a==0 doit etre
remplacer par a < 1e-8 && a > -1e-8 par exemple, et ceci
empeche bien toute division par zero car aux dernieres
nouvelles a=0. passe le teste !

d'ailleurs je suis le premier a raler quand dans une source
sur les calculatrices, l'auteur de teste pas la division
par zero...

de toute maniere un programme avec une injurebox (^^) a l'ecran
doit etre considere comme un programme bugge !

petite rectification pour luhtor : flottant != reel !!! tout
mon propos est ici, dans cette (subtile?) difference
luhtor
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
4 -
L'égalité de réel est correcte, faut juste savoir ce que l'on fait.

Il n'y pas de cas général. Il peut arriver qu'une comparaison de réels (bit à bit) suffisent. Meme si dans son cas, on est d'accord, c'est pas correct.

Donc en toute rigueur, "l'egalite entre flottant n'existe pas" => c'est pas si simple.
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
C'est ce que j'appelais 'cerner' une valeur et on est bien d'accord.

Pour autant j'insiste qu'on doit absolument tester le 0 FULL avant de diviser si on ne veut pas d'injurebox à l'écran.
"si a = 1e-200 alors la clause a==0 est fausse"
bien entendu 1e-200 n'est pas ==0.0f et donc pas d'exception.
Par contre le 0 existe et sous 2 formes en flottants, -0 et +0. Sur un float (32 bit) c'est le bit 31 (le dernier) qui donne le signe mais quel que soit le signe:
if(a == 0.0f) sera évalué correctement à tout coup.