我正在尝试将“9999999999999099”转换为javascript中的数字/ float 。 问题是 parseFloat(X) 和 Number(X) 都返回 9999999999999100。
这不是同一个号码。有谁知道为什么会发生这种情况以及如何避免它? 提前致谢。
最佳答案
两个数字具有相同的 float 表示形式,因为 float 仅精确到一定级别。
如果这些数字是用于计算的,为什么需要将它们转换为比 1 更精确的千万亿级精度?如果这些值不用于计算†,请将它们保留为字符串。
† 不用于计算,我的意思是电话号码或身份证号码之类的东西。电话号码相加或相乘是没有意义的。
关于Javascript parseFloat 改变数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960519/