Любой, кто использовал метод toFix() в js, должен знать, что в этом методе есть небольшая ОШИБКА.
Перенос десятичных знаков немного отличается в IE и FF.
Например (0,005) toFix(2)=0,00 при т.е. 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){
номер_изменения=номер_изменения+".";
for(i=0;i<s;i++){
номер_изменения=номер_изменения+"0";
}
}еще {
индекс = номер изменения.длина-индекс;
for(i=0;i<(s-index)+1;i++){
номер_изменения=номер_изменения+"0";
}
}
вернуть номер изменения;
}