- utilisation de Discourse-Subscriptions
- en essayant d’ajouter un forfait tarifaire à un produit
- Entrer 19,99 dans la case du prix (c’est déjà difficile car la saisie se comporte de manière très étrange)
- Essayer de soumettre
- Obtenir l’erreur « Entier non valide 1998.9999999999998 »
Je n’ai testé cela que sur la version stable 3.5.3 jusqu’à présent, mais le code est le même sur la version bêta.
@computed("unit_amount")
get amountDollars() {
return parseFloat(this.get("unit_amount") / 100).toFixed(2);
}
set amountDollars(value) {
const decimal = parseFloat(value) * 100;
this.set("unit_amount", decimal);
}
La méchanceté des nombres à virgule flottante Javascript / IEEE-754 :
-> parseFloat("19.99")*100
<- 1998.9999999999998
Correction suggérée : const decimal = Math.round(Number(value) * 100)
Ma plus grande question : pourquoi personne ne l’a remarqué ? Personne n’a défini le prix à 19,99 $ auparavant ?