يجب على أي شخص يستخدم طريقة toFix() في js أن يعلم أن هناك خطأ صغير في هذه الطريقة.
يختلف حمل الكسور العشرية قليلاً في IE وFF.
على سبيل المثال (0.005) toFix(2)=0.00 ضمن ie toFix(2)=0.01 ضمن FF.
سيؤدي هذا إلى اختلافات في البيانات.
يمكننا تحقيق توحيد الدقة من خلال تجاوز هذه الطريقة.
انسخ رمز الكود كما يلي:
Number.prototype.toFixed = الوظيفة (الوظائف)
{
return (parseInt(this * 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(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
Index=changenum.indexOf(".");
إذا(الفهرس<0&&s>0){
Changenum=changenum+".";
ل(i=0;i<s;i++){
Changenum=changenum+"0";
}
}آخر {
Index=changenum.length-index;
ل(i=0;i<(s-index)+1;i++){
Changenum=changenum+"0";
}
}
إرجاع التغيير؛
}