- استخدام Discourse-Subscriptions
- محاولة إضافة خطة تسعير إلى منتج
- إدخال 19.99 في خانة السعر (هذا صعب بالفعل لأن الإدخال يتصرف بغرابة شديدة)
- محاولة الإرسال
- الحصول على الخطأ “Invalid integer 1998.9999999999998” (عدد صحيح غير صالح 1998.9999999999998)
لقد اختبرت هذا فقط على الإصدار المستقر 3.5.3 حتى الآن، لكن الكود هو نفسه في النسخة التجريبية (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);
}
خبث أرقام الفاصلة العائمة في جافاسكريبت / IEEE-754:
-> parseFloat("19.99")*100
<- 1998.9999999999998
الحل المقترح: const decimal = Math.round(Number(value) * 100)
سؤالي الأكبر: لماذا لم يلاحظ أحد؟ ألم يقم أحد بتعيين السعر على 19.99 دولارًا من قبل؟