答:不能,且tofixed在不同的浏览器下执行的结果不同。
实现四舍五入:
function moneySwitch(money, precision){//precision是需要精确的位数,如百分位就是2
var result = 0;
//先进行一个千分位的四舍五入,保证3.0999这种情况在保留一位小数的时候能是对的,这一位可以这么做没什么问题
var money = parseFloat(money).toFixed(3);
try{
var int_part = money.split(".")[0], //小数点前的整数
point_num = money.split(".")[1],//取小数点后面的小数
precision_num = point_num[3-precision];
if(precision_num>4){//五入的情况
if(precision==1){
point_num = parseInt(point_num)+10+"";
if(point_num.length>3){//说明往整数位进1
int_part = parseInt(int_part)+1+"";
point_num = point_num[1]+point_num[2];
}else{
point_num = point_num[0]+point_num[1];
}
result = parseFloat(int_part+"."+point_num);
}else if(precision==2){
point_num = parseInt(point_num)+100+"";
if(point_num.length>3){//说明往整数位进1
int_part = parseInt(int_part)+1+"";
point_num = point_num[1];
}else{
point_num = point_num[0];
}
result = parseFloat(int_part+"."+point_num);
}else if(precision==3){
int_part = parseInt(int_part)+1+"";
point_num = 0;
}
result = parseFloat(int_part+"."+point_num);
}else{//四舍的情况
if(precision==1){
point_num = point_num[0]+point_num[1];
}else if(precision==2){
point_num = point_num[0];
}else if(precision==3){
point_num = 0;
}
result = parseFloat(int_part+"."+point_num);
}
}catch(e){
return parseFloat(money).toFixed(2);//如果过程中有出错就tofixed代替为解决
}
return result;
}