我想将浮点变量转换为字符串而不会丢失任何精度。
即。我希望字符串具有与我的浮点变量包含相同的信息,因为我使用输出进行进一步处理(即使这意味着字符串将非常长且可读)。
为了更清楚地说明这一点,我希望有循环转换功能
var dA = 323423.23423423e4;
var sA = toString(dA);
var dnA = toDouble(sA);
我希望dnA和dA相等
由于
PS:互联网上的消息来源通常会谈论如何对字符串进行舍入,但我没有找到有关精确表示的信息。另外,我对任意精度计算不感兴趣,我只需要双精度浮点运算。
答案 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.01234567
,dA
最后仍然等于dnA
。
答案 1 :(得分:0)
只需dA.toString()
和parseFloat(sA)
即可。