解析长度超过 16 个字符的字符串的浮点数

parseFloat of string longer than 16 characters

本文关键字:字符 字符串 浮点数      更新时间:2023-09-26

字符串的parseFloat对字符串可以包含多少个字符有限制吗?我在这里没有看到任何关于限制的内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat

但是在控制台中运行以下内容似乎显示了我意想不到的结果。

parseFloat('1111111111111111'); // 16 characters long
// result 1111111111111111
parseFloat('11111111111111111'); // 17 characters long
// result 11111111111111112

谁能为我分解这个?

在 Javascript 中,浮点数存储为双精度值。这些数字大约有 16 位有效数字,这意味着 17 位数字不一定会被精确存储。

您可以向 parseFloat() 提供任何长度的数字,但无法存储大于 1.79769×10308 的任何值,这是可以存储在双精度变量中的最大值。

如果你有时间,我建议你阅读这篇文章:每个计算机科学家都应该知道的关于浮点运算的知识