คุณควรปรับขนาดทศนิยมของคุณเป็น 100 และแทนค่าเงินทั้งหมดเป็นเซนต์ทั้งหมด นี้คือการหลีกเลี่ยงปัญหาที่เกิดขึ้นกับตรรกะจุดลอยตัวและการคำนวณ ไม่มีประเภทข้อมูลทศนิยมใน JavaScript ประเภทข้อมูลที่เป็นตัวเลขเท่านั้นคือทศนิยม ดังนั้นโดยทั่วไปจึงแนะนำให้จัดการเงินเป็น2550
เซ็นต์แทน25.50
ดอลลาร์
พิจารณาว่าใน JavaScript:
var result = 1.0 + 2.0; // (result === 3.0) returns true
แต่:
var result = 0.1 + 0.2; // (result === 0.3) returns false
การแสดงออก0.1 + 0.2 === 0.3
ผลตอบแทนfalse
แต่โชคดีจำนวนเต็มคณิตศาสตร์ในจุดลอยตัวเป็นที่แน่นอนดังนั้นข้อผิดพลาดการแสดงทศนิยมสามารถหลีกเลี่ยงได้โดยการปรับ1
โปรดทราบว่าในขณะที่ชุดของจำนวนจริงไม่มีที่สิ้นสุด แต่จะมีเพียงจำนวน จำกัด เท่านั้น (18,437,736,874,454,810,627 ที่แน่นอน) สามารถแสดงด้วยรูปแบบทศนิยมของ JavaScript ดังนั้นการเป็นตัวแทนของตัวเลขอื่น ๆ จะได้รับการประมาณของจำนวนจริง2
1ดักลาส Crockford: JavaScript: ดีอะไหล่ : ภาคผนวก A - อะไหล่ที่น่ากลัว (หน้า 105)
2เดวิดฟลานาแกน: JavaScript: แตกหักคู่มือฉบับที่สี่ : 3.1.3 Floating-Point ตัวอักษร (หน้า 31)