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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
var t = parseFloat(msg.payload.i[n]) * 100;
node.warn("index: " + msg.payload.i[n] + " t: " + t );
"index: 1.12 t: 112.00000000000001"
"index: 1.13 t: 112.99999999999999"