Un bug dans la calculette d'os X??

sucellus

Membre actif
17 Septembre 2000
413
3
49
Montreuil
www.sucellus.net
Je lance la calculette pour faire des additions toutees betes et la j'ai besoin de la "bande papier"...

Et pour uen raison inconnus la calculette persiste a me faire la chose suivante:
81,85 ===> 81,84999999999999999

????????
C'est quoi ce bordel?
 
aller on continu dans les bizaries......


2099,51 -
1138,51 =
961,0000000000002

heuuuuu Mr Apple quesque vous avez fichus la???

QQun sait comment faire pour signaler ce genre de bug a Apple?
 
cool.gif
Bon, je crois que je vais attendre encore un peu, avant de toucher à mon 2.6, je n'avais pas eu le temps de télécharger la prédédente 2.8, car elle avait fait la valise avant, donc... "Attendre et observer"
mad.gif
 
Je ne sais pas s'il s'agit d'un bug, mais il est notoire que les ordinateurs ne sont pas très forts pour les calculs.
smile.gif
je parle du point de vue précision, pas vitesse bien sûr !

C'est peut-être un comble, mais suivant la manière dont ils sont stockés en mémoire (en fonction du nombre de bits utilisés), les chiffres à virgule sont arrondis et effectivement donnent des résultats de ce type. C'était particulièrement flagrant avec les processeurs 8 bits (je pense au Z80 utilisé sur les Amstrad). Il est possible que la calculette Apple ne s'embarasse pas de fioritures et fasse ses calculs sur de petits bits.
laugh.gif


Sinon, si dans les versions antérieures du système ça marche correctement, là on peut parler de bug.
 
sucellus a dit:
aller on continu dans les bizaries......


2099,51 -
1138,51 =
961,0000000000002

heuuuuu Mr Apple quesque vous avez fichus la???

QQun sait comment faire pour signaler ce genre de bug a Apple?

chez moi (imac 17" 800 mghz) le résultat est 961.
tu peux commencer par jeter les préfs de la calculette.
 
tu l'as bien fait avec la bande de papier et non avec l'écran seule
moi aussi avec juste l'écran j'ai ce résultat mais avec la bande de papier j'obtient bien le résultat a virgule .

zen.gif
jfh
zen.gif
 
Blob a dit:
Sous panther j'ai le même bug !
confused.gif


Yip a dit:
Sinon, si dans les versions antérieures du système ça marche correctement, là on peut parler de bug.



Ma remarque est valable pour les versions ultérieures aussi
laugh.gif


Y a-t-il un programmeur dans la salle pour nous expliquer avec clarté ce problème de manque de précision des calculettes lié au stockage des données sur un nombre insuffisant de bits ?
 
Yip a dit:
Y a-t-il un programmeur dans la salle pour nous expliquer avec clarté ce problème de manque de précision des calculettes lié au stockage des données sur un nombre insuffisant de bits ?
c'est assez simple à expliquer, mais c'est du principalement au changement de base des calculs.
dans l'ordinateur, un float (nombre flottant) est enregistré dans un format binaire. on va prendre un petit nombre avec un codage sur 4 octets (pour simpifier)
soit le chiffre 81,85 par exemple:
la partie avant la virgule ne pose pas de problèmes particuliers :
1010001 en binaire donc il stocke 111 (7) pour la position de la décimale, puis ensuite, il s'attaque à la partie après la virgule, et c'est là que tout ne va pas très bien. il reste 0,85 à mettre en binaire:
0,85*2 = 1,7 donc 1 et il reste 0,7
0,7*2 = 1,4 donc 1 et il reste 0,4
0,4*2 = 0,8 donc 0 et il reste 0,8
0,8*2 = 1,6 donc 1 et il reste 0,6
0,6*2 = 1,2 donc 1 et il reste 0,2
0,2*2 = 0,4 donc 0 et il reste 0,4 et on se retrouve dans une boucle infinie dont on s'arrete quand on a atteint le nombre de bits de sauvegarde du chiffre
donc dans le cas d'un codage sur 32 bits (on a 8 bits pour la position de la virgule ) 00000111 et 24 pour la valeur à retenir donc
1010001,11011001100110011(00110011001100110011001100) perdant donc la précision sur la fin de la partie décimale. Quand on cherche à reconstituer notre chiffre, on a:
1/2=0,5 - (0,5+1)/2=0,75 - (0,75+0)/2=0,375 - (0,375+0)/2=0,1875 - (0,1875+1)/2=0,59375 - (0,59375+1)/2=0,796875 - (0,796875+0)/2=0,3984375 ...... (0,699996948+1)/2=0,849998474 (d'où une certaine approximation, ici pas très bonne, mais pour l'explication, il n'était pas nécessaire de le faire sur une très longue série de chiffres ma calculatrice n'aurait peut-être pu afficher la différence!)

J'espère que cette explication a été claire!
 
nektarfl a dit:
J'espère que cette explication a été claire!


Mais bien sûr !
laugh.gif


Voilà pourquoi il fallait un programmeur pour ça.
laugh.gif



Et merci nektarfl
smile.gif
zen.gif
 
sucellus a dit:
aller on continu dans les bizaries......


2099,51 -
1138,51 =
961,0000000000002

heuuuuu Mr Apple quesque vous avez fichus la???

QQun sait comment faire pour signaler ce genre de bug a Apple?

En fait en mode expert le résultat est bien 961,0000000000002
mais en mode basique c'est 961...
 
C'est un bug connu depuis belle lurette !
Mais rassurez-vous dans Panther, ça marche bien et en plus c'est un "VRAI" calculatrice scientifique avec la gestion des priorités !!!
Un petit pas pour Steve, un grand pas pour les MacUsers !