2015-03-29 5 views
2

Я пытаюсь преобразовать следующий большой int в строку в javascript без успеха. Моя цель состояла бы в конечном итоге с «582235852866076672»Javascript convert bigInt to string

var foo = 582235852866076672; 
console.log(foo); // 582235852866076700 

var baz = "'" + 582235852866076672 + "'"; 
console.log(baz); // '582235852866076700' 

var emptyString = 582235852866076672+''; 
console.log(emptyString); // 582235852866076700 

var n = foo.toString(); 
console.log(n); // 582235852866076700 

Я полагал, что номер был слишком большим, и была потеря точности в результате. я включил bigint library без успеха:

:

var bigint = require('bigint'); 
var bigintLibrary = bigint(582235852866076672).toString(); 
console.log(bigintLibrary); //582235852866076700 

Метод toSting в BigInt состояний библиотеки «Распечатайте BigInt например, в запрашиваемом базу в виде строки.»

Я ценю всю помощь и комментарии. Благодарю.

+0

Где находится номер? Номер, о котором вы говорите, не может существовать как обычный номер javascript, поэтому источник важен. –

+0

@AaronDufour число приходит в params почтового запроса, я пробовал var jsonString = JSON.stringify (582235852866076672); с тем же результатом console.log (jsonString); // 582235852866076700. – srm

+0

Вам придется вручную проанализировать параметры. Если вы не можете заставить клиента передать его как строку вместо числа? Точность теряется, как только библиотека анализирует ее на число, поэтому к тому времени, когда она дойдет до вашего кода, уже слишком поздно. –

ответ

5

Это точная проблема - номер, который вы возвращаете (582235852866076672) больше, чем максимальное число, представленное в JavaScript, которое составляет 2^53 или 9007199254740992.

+0

Спасибо за ответ, но как получить целое число 582235852866076672 в строковый формат? Все, что я пытаюсь получить, в 582235852866076700 – srm

+0

Вы помещаете кавычки вокруг него, как я. Вы не можете представить число, большее, чем максимальный размер, в JavaScript напрямую - он усекается (как вы видите). –

+1

Спасибо, я вижу, что мне было любопытно, как преобразовать целое число 582235852866076672 в строку «582235852866076672», данные поступают как целое число, и мне нужно преобразовать его в строку, я не могу просто добавить кавычки, которые у меня есть конвертировать его – srm