/**
* 计算两个值的商,结果按照字符串输出,含千分位,含两位小数
* 输入值可以是数字或者字符串
**/
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%");
......