Annonces


#1 30/04/07 18:30:50

Ju
ju@jabber.sk
Equipe Admin
Lieu: Boston, Texas
OS: Linux Debian
Date d'inscription: 26/01/04
Messages: 5878
Envoyer un MP

  Email  Site web

Langages et calculs étranges

Depuis Firefox (parce qu'il le permet), entrez cette URL :

Code:

javascript:alert(1.2 - 1.1)

et observez le résultat que javascript retourne.

Voici quelques autres calculs effectués :

1 - 0.9 = 0.09999999999999998
0.9 - 0.8 = 0.09999999999999998
0.8 - 0.7 = 0.10000000000000009
0.7 - 0.6 = 0.09999999999999998
0.6 - 0.5 = 0.09999999999999998
0.5 - 0.4 = 0.09999999999999998
0.4 - 0.3 = 0.10000000000000003
0.3 - 0.2 = 0.09999999999999998
0.2 - 0.1 = 0.1

A noter qu'en MySQL, le pb se pose aussi, mais sur des calculs différents.
Il me semble qu'en PHP aussi, et il semblerait qu'en C ça ne soit pas le cas (bien qu'on ne puisse pas savoir puisque MySQL agit différemment mais foire aussi).

Quelqu'un a-t-il une explication à cela ?



TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#2 30/04/07 19:59:21

xeter
Utilisateur CAS Habitué
Lieu: Dunkerque
OS: Linux Ubuntu
Date d'inscription: 08/02/04
Messages: 1597
Envoyer un MP

  Email  Site web

Re: Langages et calculs étranges

Et si tu fais le calcul en posant une variable pour chaque valeur en typant ( pour PHP il y a pas de typage, C je crois ( ce qui fait que le problème est pt évité ) et MySQL je crois que c'est typé
Enfin le problème vient pt du typage ^^


errare humanum est , no ordinatum

Mon CMS  => =>  http://www.aidenet.info

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#3 30/04/07 22:39:48

TibaL
tibal@jabber.fr
OS: Linux Debian
Date d'inscription: 05/02/04
Messages: 2684
Envoyer un MP

  Email  Site web

Re: Langages et calculs étranges

Ah c'est donc ça smile

En effet, en C(++) pas d'erreur et pourtant je n'ai pas typé les opérandes !

Code:

$ cat >test.c
#include <iostream>
int main()
{
  double x = 1.2 - 1.1;
  std::cout << x << std::endl;
}

$ g++ test.c

$ ./a.out
0.1

http://tibalfr.free.fr/pub/avatars/sms.gif

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#4 01/05/07 11:40:46

Ju
ju@jabber.sk
Equipe Admin
Lieu: Boston, Texas
OS: Linux Debian
Date d'inscription: 26/01/04
Messages: 5878
Envoyer un MP

  Email  Site web

Re: Langages et calculs étranges

xeter a écrit:

Et si tu fais le calcul en posant une variable pour chaque valeur en typant ( pour PHP il y a pas de typage, C je crois ( ce qui fait que le problème est pt évité ) et MySQL je crois que c'est typé
Enfin le problème vient pt du typage ^^

Et pourtant :

Code:

javascript:t1 = new Number(1.1); t2 = new Number(1.2); alert(t2 - t1);

n'y change rien (toujours 0.09999999999999987)... le typage ne serait donc pas en cause.



TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation
Actuellement aucun autre membre et 1 invité sur ce topic
Membres : [S'enregistrer]

Pied de page du Forum

Pub hébergeur :


CtrlAltSuppr.com, forums officiels de JSAND partagés avec Geek&Hype

Powered by PunCAS (JSAND) based on PunBB
© Copyright 2002–2005 Rickard Andersson