3

我想将浮点变量转换为字符串而不会丢失任何精度。

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

为了更清楚地说,我想有循环转换的功能

var dA = 323423.23423423e4;
var sA = toString(dA);
var dnA = toDouble(sA);

我希望 dnA 和 dA 相等

谢谢

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

4

2 回答 2

5

让字符串算术做字符串转换,然后用parseFloat它把它恢复为浮点数:

var dA = 323423.23423423e4;
var sA = dA + '';
var dnA = parseFloat(sA);

这是一个在行动中看到它的小提琴。

注意: 所有 JavaScript 数字都是双精度数,因此您无需区分双精度数和浮点数。因此,您唯一需要担心精度损失的地方就是您的第一行。例如,如果你var dA = 987654321.0123456789为你的第一行做了,它将等价于var dA = 987654321.01234567, 并且dA最终仍然是等价dnA的。

于 2012-12-07T16:35:34.440 回答
1

只是dA.toString()而且parseFloat(sA)应该这样做。

于 2012-12-07T16:32:49.830 回答