Bizarrerie calcul Mathématique
Bonjour,
Je travail actuellement avec Node RED et j'écris des fonctions en JavaScript.
Je suis tombé sur une bizarrerie ce matin.
Je fais le calcul suivant :
- parseInt( (1.12*100)%100 ) => retourne bien 12
- parseInt( (1.13*100)%100 ) => retourne 12 ?!
En décortiquant mes calculs, il s'avère que 1.13*100 = 12.9999
Même en faisant un parseFloat sur ma variable qui contient mon 1.12/1.13 ... j'ai la même chose.
En attendant je m'en suis sortis en faisant :
Code:
Math.round(parseFloat(msg.payload.i[n])*100)%100; // 1.13*100 = 112.9999 ??
Quelqu'un aurait-il une explication rationnelle ou une façon de faire plus propre ?
Code:
1 2
| var t = parseFloat(msg.payload.i[n]) * 100;
node.warn("index: " + msg.payload.i[n] + " t: " + t ); |
Citation:
"index: 1.12 t: 112.00000000000001"
"index: 1.13 t: 112.99999999999999"