在Flash中将Double转换为String而不会导致精度损失

时间:2012-12-07 16:29:53

标签: javascript

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

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

为了更清楚地说明这一点,我希望有循环转换功能

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

我希望dnA和dA相等

由于

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

2 个答案:

答案 0 :(得分:4)

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

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

Here's a fiddle看到它的实际效果。

注意:All JavaScript numbers are doubles,因此您无需区分双打和浮点数。因此,您唯一需要担心精度损失的地方就在您的第一行。例如,如果您的第一行有var dA = 987654321.0123456789,那么它等同于var dA = 987654321.01234567dA最后仍然等于dnA

答案 1 :(得分:0)

只需dA.toString()parseFloat(sA)即可。