inscription
Ajouter une réponse
 

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Qui est balaise en maths ? (java inside)

Bas de page 
n°9923397
zozio   profil
Profil : Pilote confirmé
Avatar
Note : 2.2/4 pour 257 votes
Posté le 13-04-2005 à 17:28:58  answer
 
Publicité

Un truc à la con qui m'énerve... il me semble que ce n'est pas un bug mais dû à une règle mathématique...
 
Bon je prend un float f = 17.5266
je fais f.doubleValue() et j'ai : 17.526599884033203
 
pourquoi ?

n°9923430
remiw   profil
Profil : Membre confirmé
Avatar
Note : 1/4 pour 3 votes
Posté le 13-04-2005 à 17:30:42  answer
 

Parce qu'un Float par la manière dont il est codé, n'est jamais EXACTEMENT à la valeur que tu lui donnes. C'est normal donc.
L'erreur n'est que de 0.0000002 environ en meme temps...

n°9923472
zozio   profil
Profil : Pilote confirmé
Avatar
Note : 2.2/4 pour 257 votes
Posté le 13-04-2005 à 17:33:26  answer
 

remiw a écrit :

 
Parce qu'un Float par la manière dont il est codé, n'est jamais EXACTEMENT à la valeur que tu lui donnes. C'est normal donc.
L'erreur n'est que de 0.0000002 environ en meme temps...




 
Oui mais comme c'est pour arrondir à 1/1000, les résultats sont faussés...
A priori j'ai trouvé un moyen de zapper ça... mais ça me gonfle de ne pas savoir pourquoi...
Ce qui voudrait dire, j'imagine, que si je fais un test sur f==d
avec f float et d double, ça ne sera jamais vérifié ?

mood
Publicité
Posté le 13-04-2005 à 17:33:26  profilanswer
 

n°9923485
zozio   profil
Profil : Pilote confirmé
Avatar
Note : 2.2/4 pour 257 votes
Posté le 13-04-2005 à 17:34:00  answer
 

Ca me fait tout drôle de faire un topic sérieux... :W

n°9923511
remiw   profil
Profil : Membre confirmé
Avatar
Note : 1/4 pour 3 votes
Posté le 13-04-2005 à 17:35:31  answer
 

Savoir pourquoi quoi ? C'est normal.
Le type Float impose une certaine "imprécision", cela dit pour 1/1000 je vois pas le problème !
 
Des explications sur les Float :
http://madchat.org/coding/float-ieee754.pdf
 

n°9923536
zozio   profil
Profil : Pilote confirmé
Avatar
Note : 2.2/4 pour 257 votes
Posté le 13-04-2005 à 17:37:04  answer
 

remiw a écrit :

 
Savoir pourquoi quoi ? C'est normal.
Le type Float impose une certaine "imprécision", cela dit pour 1/1000 je vois pas le problème !
 
Des explications sur les Float :
http://madchat.org/coding/float-ieee754.pdf




 
Merci pour le lien ! ;)
Le problème, c'est que c'est pour des calculs de parités économiques au niveau budgétaire et que certainement que ça leur ferait une tasse de café en moins sur le budget... :cyp:
 
 

n°9964031
KAYAK   profil
Profil : Pilote
Note : 1/4 pour 1 vote
Posté le 17-04-2005 à 12:12:38  answer
 

zozio a écrit :

 
Merci pour le lien ! ;)
Le problème, c'est que c'est pour des calculs de parités économiques au niveau budgétaire et que certainement que ça leur ferait une tasse de café en moins sur le budget... :cyp:




 
Sous Java, la précision des calculs est mauvaise.
Mais tu as deux solutions pour corriger cela : SISC (un langage Scheme qui calcul juste et implémenté en Java, très simple d'utilisation pour faire des calculs précis et pas besoin de connaitre Scheme) tu as aussi Jatha plus complexe.
 
Pour compenser ce défaut de Java j'utilise SISC, les performances sont très bien, si ce n'est pas du calcul intensif.
 
Sinon, il existe des librairies de calculs hautes précisions en Java.  
Regarde des solutions comme celles de Rogue Wave.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
 

Sujets relatifs
Qui cuisine chez vous ?Aide pour un divorce ( gros degeulasse inside)
Qui aime Jeanne Cheral ?Qui peux me compter les exploits de claudio Gentile?
Gunther - Qui connaissait ?Déclaration d'impôts par Internet (Solidarité inside)
[Film mythique inside!] Le retour d' E.T. !!!!Pocket bike a 200 € (foir'fouille inside)
Qui connait l'Ile Maurice ?Qui est passé à Zone Rouge ce soir 30/03/05 ?
Plus de sujets relatifs à : Qui est balaise en maths ? (java inside)