Как преобразовать очень большое десятичное число в строку? - PullRequest
4 голосов
/ 18 января 2020

Я хочу преобразовать десятичное число 123.456e+304 в строку "123.456e+304" (позиция десятичной точки . не должна изменяться).

Вот то, что я пробовал, но все они возвращают один и тот же результат: 1.23456e+306 (позиция десятичной точки была изменена, и она также заменила 304 на 306).

var e = 123.456e+304;

console.log(e.toString());
console.log((e).toString());
console.log(e .toString());
console.log(e.toFixed());
console.log(String(e));
console.log((new String(e)).toString());
console.log(`${e}`);
console.log('' + e);
console.log(e + '');
console.log(''.split.call(e, '').join(''));

Можно ли преобразовать его в ожидаемую строку "123.456e+304"?

1 Ответ

4 голосов
/ 18 января 2020

Это невозможно, поскольку после того, как вы присвоили:

var e = 123.456e+304;

и обработаны интерпретатором JavaScript, e - это просто число, внутренне представленное IEEE 754, число, эквивалентное 1,23456e +306 и у него "нет памяти", где была ваша десятичная точка. Поэтому независимо от того, что вы делаете, вы не можете знать, где была десятичная точка, и позволить вам переместить ее туда, где вы хотите, чтобы она была в строке.

Для того, чтобы «иметь знание» о том, где находится десятичная точка была, вам нужно иметь строку для начала, но это также результат, который вы хотите.

...