我想在不损失任何精度的情况下将浮点变量转换为字符串。
即我希望该字符串具有与我的浮点变量包含的信息相同的信息,因为我将输出用于进一步处理(即使这意味着该字符串将非常长且可读)。
说得更清楚一点,我想要循环转换的函数
var dA = 323423.23423423e4;
var sA = toString(dA);
var dnA = toDouble(sA);
我希望 dnA 和 dA 相等
谢谢
PS:互联网上的资源通常会讨论如何舍入字符串,但我还没有找到关于精确表示的信息。另外我对任意精度计算不感兴趣,我只需要 double 浮点运算。
最佳答案
让字符串算法进行字符串转换,然后使用 parseFloat
将其恢复为 float :
var dA = 323423.23423423e4;
var sA = dA + '';
var dnA = parseFloat(sA);
Here's a fiddle 看看它的实际效果。
注意: All JavaScript numbers are doubles ,因此您无需区分 double 和 float 。因此,您唯一需要担心精度损失的地方是第一行。例如,如果您在第一行输入了 var dA = 987654321.0123456789
,那么它将等同于 var dA = 987654321.01234567
,而 dA
仍然最后等于 dnA
。
关于javascript - 将 Double 转换为 String 而不会在 javascript 中丢失精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767088/