ใครก็ตามที่เคยใช้เมธอด toFix() ใน js ควรรู้ว่าเมธอดนี้มี BUG เล็กน้อย
การยกทศนิยมจะแตกต่างกันเล็กน้อยภายใต้ IE และ FF
ตัวอย่างเช่น (0.005) toFix(2)=0.00 ภายใต้ เช่น toFix(2)=0.01 ภายใต้ FF
ซึ่งจะทำให้เกิดความแตกต่างของข้อมูล
เราสามารถบรรลุการรวมความแม่นยำได้โดยการแทนที่วิธีนี้
คัดลอกรหัสรหัสดังต่อไปนี้:
Number.prototype.toFixed = ฟังก์ชัน
-
return (parseInt(สิ่งนี้ * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
-
แต่ยังคงมีปัญหากับสิ่งนี้ ในทุกเบราว์เซอร์ String("0.050").toFix(2)=0.1
เราเห็นได้ว่าเดิมคุณต้องการเก็บทศนิยมสองตำแหน่ง แต่สุดท้ายกลับกลายเป็นทศนิยมหนึ่งตำแหน่ง กล่าวคือ. การแทนที่นี้เฉพาะ toFixed() จะละทิ้ง 0 สุดท้ายโดยอัตโนมัติ
เราจำเป็นต้องดำเนินการประมวลผลวิธีนี้เพิ่มเติม
คัดลอกรหัสรหัสดังต่อไปนี้:
Number.prototype.toFixed = ฟังก์ชัน
-
changenum=(parseInt(สิ่งนี้ * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
ดัชนี=changenum.indexOf(".");
ถ้า(ดัชนี<0&&s>0){
เปลี่ยนนัม=เปลี่ยนนัม+"";
สำหรับ(i=0;i<s;i++){
เปลี่ยนนัม=เปลี่ยนนัม+"0";
-
}อื่น {
ดัชนี=changenum.ความยาวดัชนี;
สำหรับ(i=0;i<(s-index)+1;i++){
เปลี่ยนนัม=เปลี่ยนนัม+"0";
-
-
ส่งคืนหมายเลขเปลี่ยน;
-