博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

js Number越界比较.

Posted on 2013-07-26 19:17  生命如风  阅读(1018)  评论(0编辑  收藏  举报
 Javascript number超过16位就无法比较了,所以自己写了一个。

用到的数组函数
1、Array.reverse() 方法将一个 Array 对象中的元素位置进行反转。在执行过程中,这个方法并不会创建一个新的 Array 对象
2、Array.concat concat 方法返回一个 Array 对象,其中包含了 array1 和提供的任意其他项目的连接。
3、Array.join join 返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。

 





 1 <script type="text/javascript">
 2         //begin > end 返回true 
 3         //begin <= end 返回false
 4         function Compare(begin, end) {
 5 
 6             if (begin == end) {
 7                 return false;
 8             }
 9             
10             var beginArr = new Array();
11             var endArr = new Array();
12 
13             var len = (begin.length > end.length) ? begin.length : end.length;
14             beginArr = begin.paddLeftA(len, '-1');
15             endArr = end.paddLeftA(len, '-1');
16 
17 
18             var result = false;
19             //debugger;
20             for (var i = 0; i < len; i++) {
21                 if (parseFloat(beginArr[i]) == parseFloat(endArr[i])) {
22                     continue;
23                 } else {
24                     result = parseFloat(beginArr[i]) > parseFloat(endArr[i]);
25                     break;
26                 }
27             }
28 
29             return result;
30         }
31 
32         String.prototype.paddLeft = function(myLength, paddStr) {
33             var stringLength = this.length; //输入字符串长度
34             var paddLength = myLength - stringLength; //0字符串长度
35             var result = ''; //补0后返回的字符串
36 
37             //生成0字符串
38             for (var i = 0; i < paddLength; i++) {
39                 result +=  paddStr || '0';
40             }
41             //拼接
42 
43             result += this;
44             return result;
45         }
46         
47         //返回数组
48         String.prototype.paddLeftA = function(myLength, paddStr) {
49             var stringLength = this.length; //输入字符串长度
50             var paddLength = myLength - stringLength; //0字符串长度
51             var result = ''; //补0后返回的字符串
52             var resultArr = new Array();
53 
54             //生成0字符串
55             for (var i = 0; i < paddLength; i++) {
56                 resultArr.push(paddStr)
57             }
58             //拼接
59 
60             result += this;
61             return resultArr.concat(this.split(''));
62         }
63 
64         function add(begin, end) {
65 
66             var result = new Array();
67             //左补零
68             var len = (begin.length > end.length) ? begin.length : end.length;
69             var beginArr = begin.paddLeft(len, '0').split('');
70             var endArr = end.paddLeft(len, '0').split('');
71 
72             //从个位开始计算
73             for (var i = len - 1; i > -1; i--) {
74                 var temp1 = parseInt(beginArr[i]);
75                 var temp2 = parseInt(endArr[i]);
76 
77                 var sum = temp1 + temp2;
78                 result.push(sum);
79             }
80 
81             for (var i = 0; i < result.length; i++) {
82                 var temp = parseInt(result[i]);
83                 if (temp >= 10) {
84                     result[i] = (temp - 10);
85                     if (i == result.length - 1) {
86                         result.push(1);
87                     } else {
88                         result[i + 1] = parseInt(result[i + 1]) + 1;
89                     }
90                 }
91             }
92             return result.reverse().join('');
93         }
94     </script>