您的位置:首页 > Web前端 > JavaScript

JavaScript比较大数字符串

2016-08-19 07:28 381 查看
假如你要编写一个函数,stringIntGreaterThan,接收两个字符串参数。

这两个参数代表可能为正负的整数,它们可以是任意的位数,甚至是上千位。

可以确信,这两个整数都不会由0开头。

这个函数如果第一个参数大于第二个参数,则返回true,否则返回false

我的思路很简单,划分成四种情况:

1.参数同时为正,这种情况下,先判断长度,更长的更大,如果长度一致,则一个个字符地作大小比较。

2.第一个参数为正,第二个为负,这样无须比较,直接返回true。

3.第一个参数为负,第二个为正,这样无须比较,直接返回false。

4.参数同时为负,这种情况下,先判断长度,更长的更小,如果长度一致,则一个个字符地作大小比较。

这样的话,就需要一个判断负数的辅助函数。

实现代码如下:

function isNegative(str){
return str.indexOf("-") === 0;
}

function stringIntGreaterThan(a, b) {
if(isNegative(a) && isNegative(b)){
if(a.length < b.length){
return true;
}
else if(a.length > b.length){
return false;
}
for(var i=0;i<a.length;i++){
var c1 = a.charAt(i);
var c2 = b.charAt(i);
if(c1 > c2){
return false;
}
if(c1 < c2){
return true;
}
}
}
else if(!isNegative(a) && isNegative(b)){
return true;
}
else if(isNegative(a) && !isNegative(b)){
return false;
}
else{
if(a.length > b.length){
return true;
}
else if(a.length < b.length){
return false;
}
for(var i=0;i<a.length;i++){
var c1 = a.charAt(i);
var c2 = b.charAt(i);
if(c1 > c2){
return true;
}
if(c1 < c2){
return false;
}
}
}
return false;
}


大家可以看到,实现代码比较长,应该有更好的方法,欢迎和我分享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息