如何将非常大的十进制数转换为字符串?

How to convert a very large decimal number to a string?

我想把小数123.456e+304转成字符串"123.456e+304"(小数点.的位置不要改)

这是我试过的,但是都return相同的结果:1.23456e+306(小数点的位置已经改变了,而且还替换了304306).

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"

这是不可能的,因为一旦你分配了:

var e = 123.456e+304;

并由 JavaScript 解释器处理,e 只是一个由 IEEE 754 内部表示的数字,相当于 1.23456e+306 并且它有 "no memory" ,其中你的小数点点是。所以无论你做什么,你都无法知道小数点在哪里,让你把它移动到你希望它在字符串中的位置。

为了 "to have the knowledge" 小数点的位置,您需要有一个字符串开头,但这也是您想要的结果。