# Big Integer and Javascript

The other day I was testing the graphics library D3.js and wanted to represent the Fibonacci series.

So I did a quick program in Node.js:

```
var fibonacci = [ 0, 1 ];
var position=2;
var sum=0;
while (position<100) {
fibonacci[position]=fibonacci[position-1]+fibonacci[position-2];
position++;
}
console.log(JSON.stringify(fibonacci));
```

This program return first 100 positions.

Doing mental arithmetic I realized that in the 79 position of the array (the sum of the position 77 and 78) was wrong!

```
5527939700884757
8944394323791464
14472334024676220!!!
```

I read a little on the internet and the largest number that is represented as an integer in JavaScript is 2 ^ 53.

Let's do a little sample.

```
var big=Math.pow(2, 53);
var big2=big+1;
console.log('big: '+big);
console.log('big2: '+big2);
```

OMG it's true!

So I changed initial program by this:

```
var limit=Math.pow(2, 53);
var fibonacci = [ 0, 1 ];
var position=2;
var controller=0;
var sum=0;
while (controller==0) {
sum=fibonacci[position-1]+fibonacci[position-2];
if (sum>limit) {
controller=1;
} else {
fibonacci[position]=sum;
position++;
}
}
position--;
console.log('The last right position is: ' + position);
console.log(JSON.stringify(fibonacci));
```

So the last right position is 78 because 14472334024676221 > 9007199254740992 :-)

Be careful with this. Next week I'll try this library big-integer.