11548 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,

bon but : obtenir le résultat de 100 - 100.2 (soit -0.2)

J'ai fait un bout de code très simple :
var total = parseFloat("100.2");
var ecart = 100;
var res = ecart-total;
alert(res);


donne à l'execution :
-0.20000000000000000284


Smiley eek Smiley eek J'ai raté un truc ou c'est normal ??
Modifié par PoichOU (12 Oct 2007 - 17:14)
Smiley confuse Smiley confuse

d'après http://www.jibbering.com/faq/#FAQ4_7
En Javascript les nombres sont représentés comme des IEEE-754 doubles (tous les nombres), ca donne une 15 a 16 chiffres. Les entiers sont précis jusqu'a 9e15. A partir de la les opérations sont précises autant que possible mais jamais plus. Les opérations sur les entiers sont précises si le véritable résultat et toutes les étapes intermédiaires sont des entiers dans l'intervale acceptable.


ça voudrait dire qu'il n'y a pas de solution ?
IEEE754 : GRrrrrrr Smiley fache Smiley fache Smiley fache

Résolu de façon peu académique mais bon ... ça marche

var nombreDecimalMax = 8;
var bidouille = parseFloat("1E+"+nombreDecimalMax);
var total = parseFloat("100.2");
var ecart = parseFloat("100");
var res = (ecart*bidouille)-(total*bidouille);
res /=bidouille;
alert(res);


merki alsa Smiley cligne