เมื่อเราต้องการแสดงผลทศนิยม 2 ตำแน่งด้วย Javascript เราจะใช้ toFixed() เพื่อทำการหาค่า การใช้งานเช่น
JAVASCRIPTa = 24.234; // a เป็น 24.234 b = a.toFixed(2); // 24.23
แต่ปัญหาจะเกิดเมื่อ มีการคำนวนตัวเลขบางตัวเช่น
JAVASCRIPTa = 162.295; // a เป็น 162.295 b = a.toFixed(2); // 162.29
จะเห็นว่าจะเกิดความผิดพลาดในการแสดงผล ซึ่งค่าที่ถูกต้อควรจะเป็น 162.30 เนื่องจากการหาค่าทศนิยมใน Javascript จะใช้
JAVASCRIPTa = 162.295; // a เป็น 162.295 b = a.toFixed(2); // a * 100 = 16229.49999999 // a / 100 = 162.29
ทางแก้ของปัญหานี้ก็คือเขียน Function มาใช้เองครับ เช่น
JAVASCRIPTfunction fncToFixed(num,dec){ if(typeof(pre) != 'undefined' && pre != null){ var decimals=dec; } else{var decimals=2;} num *= Math.pow(10,decimals); num = (Math.round(num,decimals) + (((num - Math.round(num,decimals))>=0.4)?1:0)) / Math.pow(10,decimals); return num.toFixed(decimals); } a = 97.475; // a = 97.475 toFixed(a, 2); // 97.48toFixed(a); // 97.48
หลัก การทำงานก็คือ เอาเลขทศนิยมคูณด้วย 10 ยกกำลังทศนิยมที่ต้องการหา เช่น ทศนิยม 2 หลักก็คูณด้วย 100 จากนั้นก็ดูว่าเลขหลังทศนิยมนั้น มีค่าเป็นเท่าใดควรปัดเศษหรือไม่เอาไปรวมกับเลขเดิม จากนั้นเอามาหารด้วย 10 ยกกำลังทศนิยมที่ต้องการหา วิธีการอาจจะดูยุ่งยาก แต่การคำนวนเพื่อให้ถูกต้องควรคำนวนตัวเลขแบบตัวเลข ไม่ควรหาค่าแบบตัวอักษรซึ่งจะทำให้การทำงานผิดพลาดได้
1 ความคิดเห็น:
ขออนุญาตยืมฟังก์ชันใช้งานหน่อยครับ
แสดงความคิดเห็น