在javascript中将Double转换为String而不会丢失精度

wir*_*bel 3 javascript

我想在不丢失任何精度的情况下将浮点变量转换为字符串。

即我希望字符串具有与我的浮点变量包含的信息相同的信息,因为我使用输出进行进一步处理(即使这意味着字符串将非常长且可读)。

为了更清楚地说明这一点,我想要循环转换的功能

var dA = 323423.23423423e4;
var sA = toString(dA);
var dnA = toDouble(sA);
Run Code Online (Sandbox Code Playgroud)

我希望 dnA 和 dA 相等

谢谢

PS:互联网上的资料来源通常谈论如何舍入字符串,但我还没有找到有关确切表示的信息。另外我对任意精度计算不感兴趣,我只需要双精度浮点运算。

Bri*_*y37 5

让字符串算术进行字符串转换,然后使用parseFloat将其恢复为浮点数:

var dA = 323423.23423423e4;
var sA = dA + '';
var dnA = parseFloat(sA);
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴,可以看到它的实际效果。

注意: 所有 JavaScript 数字都是 doubles,因此您无需区分 doubles 和 floats。因此,您唯一需要担心精度损失的地方是您的第一行。例如,如果您var dA = 987654321.0123456789对第一行进行了操作,则它等效于var dA = 987654321.01234567,并且dA最终仍然相等dnA