0

when I try to convert a long number to a string and an array by using google dev tool, I got a problem.

let m=123000000000000000000000000000000
//1.23e+32
m=m+'good'
//"1.23e+32good"
// instead of "123000000000000000000000000000000good"

I plan to get the result of ["1","2","3","0",....."0"],but now I'm stuck. anyone know how to solve this? Thanks.


Intl.NumberFormat is a good way, but when I try a long number:

Intl.NumberFormat('en-US', {useGrouping: false}).format(73167176531330624919225119674426574742355349194934)
//"73167176531330600000000000000000000000000000000000"

ops. There is still an issue.

3 Answers3

1

Use the Intl.NumberFormat API:

Intl.NumberFormat('en-US', {useGrouping: false}).format(123000000000000000000000000000000)

returns a string:

"123000000000000000000000000000000"
John Ellmore
  • 2,209
  • 1
  • 10
  • 22
  • That's a good solution and deserve its place in [the duplicate](https://stackoverflow.com/questions/1685680/how-to-avoid-scientific-notation-for-large-numbers-in-javascript) – Kaiido Mar 16 '18 at 05:29
0
function numberToDigitNumber(number) {
    let arrayOfNumber = number.toString().split('e+');
    let digitsOfNumber = arrayOfNumber[0].replace('.' , '');
    for(let i = 0; i < Number(arrayOfNumber[1]); i++) {
        digitsOfNumber += '0';
    }
    return digitsOfNumber;
}

let num = 123000000000000000000000000000000;
console.log(numberToDigitNumber(num) + ', instead of ' + num);
// -> 123000000000000000000000000000000 instead of 123e+32

Use this function, i created one for this problem. You can define a variable and assign its number value with this fuckion like this;

let myNumber = numberToDigitNumber(123000000000000);
n3pixowe
  • 122
  • 10
0

Use a string instead:

//current result
var m = 123000000000000000000000000000000;
m = m + 'good';
console.log(m);

//desired result
var n = '123000000000000000000000000000000';
n = n + 'good';
console.log(n);
Tom O.
  • 5,730
  • 2
  • 21
  • 35