var s1 = 100000000000000000000; var s2 = 200000000000000000000; alert(eval(s1)+eval(s2));//300000000000000000000
nzz1985不行的啊 var dd = 130100098857899944; var d = 100000000000000000000; alert(eval(d));//输出100000000000000000000 alert(eval(dd));//输出130100098857899930 这是为啥呢
不行,貌似找不到办法了,我试了Number也不行 把字符串拆开一个个的自己算倒是一种办法
var a = 1301000988578999415; var b= 1000000 ; var c= a + b; var d = a ; if(c == d) { alert("OK"); } else { c = c + " "; //这个是关键 alert("Nok c:" + c +" --- d:" + d + " --- c-d :"+ (c - d)); } /** 这个可以正常的显示大数据, 而且运算结果是正确的, 你看看能不能满足你的要求*/
但long好像也只能算到19位.
再不行,那得用BigInteger了,不过不知道js有没有这个
var s2 = 200000000000000000000;
alert(eval(s1)+eval(s2));//300000000000000000000
var dd = 130100098857899944;
var d = 100000000000000000000;
alert(eval(d));//输出100000000000000000000
alert(eval(dd));//输出130100098857899930
这是为啥呢
把字符串拆开一个个的自己算倒是一种办法
var a = 1301000988578999415;
var b= 1000000 ;
var c= a + b;
var d = a ;
if(c == d)
{
alert("OK");
}
else
{
c = c + " "; //这个是关键
alert("Nok c:" + c +" --- d:" + d + " --- c-d :"+ (c - d));
}
/**
这个可以正常的显示大数据, 而且运算结果是正确的, 你看看能不能满足你的要求*/
String str1 = "130100098857899944";
String str2 = "3";
String str11 = null;
String str22 = null;
if(str1.length()<str2.length()){
str11 = str2.substring(0,str2.length()-str1.length());
str22 = str2.substring(str2.length()-str1.length(),str2.length());
}else{
str11 = str1.substring(0,str1.length()-str2.length());//13010009885789994
str22 = str1.substring(str1.length()-str2.length(),str1.length());//4
}
int num = Integer.parseInt(str22) + Integer.parseInt(str2);
System.out.println(str11+num);
}要判断截取出来的用于相加的字符串能不能转换为int或者long,还要考虑相加的结果是不是超过int或long的范围,如果需要,就再截取
如果你觉得可以的话,就用js写个类似的就可以了,要是你的数据不是超级大的话,那代码就可以写死一点了