js 计算问题求大神

function test(a,b){
var c = 0.00;
if(a != 0.00&&b!=0.00){
c = (a/b).toFixed(2);
}
return c;
}
如果a或者b为0怎么返回0.00,如果是千位怎么再加上千位分割符

上面写的没用
另外,如果a为1,375.00 b 为0 直接NaN了
求大神帮忙看下

/**
* 计算两个值的商,结果按照字符串输出,含千分位,含两位小数
* 输入值可以是数字或者字符串
**/
function test(a,b){
//输入全部按照字符串处理,涉及到千分号.
    if(typeof a == "number"){
     a = a.toFixed(2);
}
a = a.toString().replace(/,/,"");
b = b.toString().replace(/,/,""); 

    var c = 0.00; 
    var f_a = parseFloat(a);
    var f_b = parseFloat(b);
    if(f_a == 0 || f_b== 0){
     return "0.00";
    }
    c = (f_a/f_b).toFixed(2);   //已经得到了c
    //下面是处理增加千分号的代码
    var d = [];
    var c_length = c.length;
    //处理小数点后面的输出
    for(var i=0;i<c_length && i<3;i++){
     d.push(c[c_length -1 - i]);
    }
    //处理小数点前面的输出
    for(var i=0;i<c_length-3;i++){
     d.push(c[c_length -4 -i]);
     if(i%3==2){
     d.push(",");
     }
    }
    return  d.reverse().join("");
}  

console.log(test("11,222.00","1.00") == "11,222.00");
console.log(test("11,222.00","2.00") == "5,611.00");
console.log(test("0","0") == "0.00");
console.log(test(0,0) == "0.00");
console.log(test("0","0.00") == "0.00");
console.log(test("0","00") == "0.00");
console.log(test("23.00","23") == "1.00");
console.log(test("23.0000","23") == "1.00");
console.log(test("230.00","23") == "10.00");
console.log(test(230.00,"23") == "10.00");
console.log(test(230.00,23) == "10.00");
console.log(test("1,375.00",0) == "0.00");


测试结果:

D:\>node test.js

true

true

true

true

true

true

true

true

true

true

true

追问

谢谢哈 ,再请教下

因为我结果要加上%,如果直接把结果乘以100,0.00的时候 直接为0%了,程序里 该怎么改?

追答function test(a,b){
    ........
    var c = 0.00; 
    var f_a = parseFloat(a);
    var f_b = parseFloat(b);
    if(f_a == 0 || f_b== 0){
     return "0.00%";
    }
    c = (f_a/f_b).toFixed(2);   //已经得到了c
    //下面是处理增加千分号的代码
    var d = ["%"];
    var c_length = c.length;
    //处理小数点后面的输出
    .........
}

追问

不好意思,又打扰了,请问乘以100在那边加好 ,test(1,1) 现在结果为1.00%,应该为100.00%,我在var f_a = parseFloat(a)*100;结果为,100.00%

追答/**
* 计算两个值的商,结果按照字符串输出,含千分位,含两位小数
* 输入值可以是数字或者字符串
**/
function test(a,b){
//输入全部按照字符串处理,涉及到千分号.
    if(typeof a == "number"){
     a = a.toFixed(2);
}
a = a.toString().replace(/,/,"");
b = b.toString().replace(/,/,""); 

    var c = 0.00; 
    var f_a = parseFloat(a);
    var f_b = parseFloat(b);
    if(f_a == 0 || f_b== 0){
     return "0.00%";
    }
    c = (100*f_a/f_b).toFixed(2);   //已经得到了c  //在这里乘以100
    //下面是处理增加千分号的代码
    var d = ["%"];
    var c_length = c.length;
    //处理小数点后面的输出
    for(var i=0;i<c_length && i<3;i++){ //修改一个小bug
     d.push(c[c_length -1 - i]);
    }
    //处理小数点前面的输出
    for(var i=0;i<c_length-3;i++){
     d.push(c[c_length -4 -i]);
     if(i%3==2 && i != c_length-4){
     d.push(",");
     }
    }
    var d = d.reverse().join("");
    return  d;
}  

console.log(test("11,222.00","1.00") == "1,122,200.00%");
console.log(test("11,222.00","2.00") == "561,100.00%");
console.log(test("0","0") == "0.00%");
console.log(test(0,0) == "0.00%");
console.log(test("0","0.00") == "0.00%");
......

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-09
怎么返回0.00

else c=0;

千位分隔符的话不是应该自动加的么?没有的话,c是只能存储数据的,千位分隔符的话属于文字格式
第2个回答  2014-12-09
没有经历过你的人生的人,他无权来评判你的对与错,好与坏,因为他不是你。他不懂得你内心经历的一切狂风暴雨,更不懂得你的世界里所走过的惊心动魄的时刻。