另一个选项是 ( 它不会不必要地转换为字符串,并且还将 (162.295).toFixed(2) 的错误计算更正为 162.29 (应该是 162.30 ))。
Number.prototype._toFixed=Number.prototype.toFixed; //Preserves the current function
Number.prototype.toFixed=function(precision){
/* step 1 */ var a=this, pre=Math.pow(10,precision||0);
/* step 2 */ a*=pre; //currently number is 162295.499999
/* step 3 */ a = a._toFixed(2); //sets 2 more digits of precision creating 16230.00
/* step 4 */ a = Math.round(a);
/* step 5 */ a/=pre;
/* step 6 */ return a._toFixed(precision);
}
/*This last step corrects the number of digits from 162.3 ( which is what we get in
step 5 to the corrected 162.30. Without it we would get 162.3 */
编辑:在尝试这个特定的化身时,this*=Math.pow(10, precision||0)
会创建一个错误无效的左手赋值。所以给这个关键字变量a
。如果我关闭我的功能也会有所帮助^_^;;