- usando Discourse-Subscriptions
- intentando añadir un plan de precios a un producto
- Introducir 19.99 en el campo de precio (esto ya es difícil porque la entrada se comporta de forma muy extraña)
- Intentar enviar
- Obtener el error “Invalid integer 1998.9999999999998”
Solo he probado esto en la versión estable 3.5.3 hasta ahora, pero el código es el mismo en la beta.
@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 fealdad de los flotantes Javascript / IEEE-754:
-> parseFloat("19.99")*100
<- 1998.9999999999998
Solución sugerida: const decimal = Math.round(Number(value) * 100)
Mi mayor pregunta: ¿por qué nadie se dio cuenta? ¿Nadie había establecido el precio en $19.99 antes?