当我的字符串太长时,ParseFloat 的奇怪行为
Odd behavior with ParseFloat when my string is too long
我正在制作一个计算器(类似于javascript中的excel),我发现了ParseFloat的一个奇怪的行为。
parseFloat(999999999999999) //999999999999999
parseFloat(9999999999999999) //10000000000000000
parseFloat(9999999999999899) //9999999999999900
javascript中的parseFloat函数有限制吗?遵循ECMA标准,这没有问题。
Float
不是一个无穷无尽的容器。请考虑以下示例:
console.log(0.1 + 0.2 == 0.3) // Prints... FALSE!
或者,另一种情况:
console.log(99999999999999999999999999999999999) // Prints 1e+35
。而1e+35
只是1
35
零。原始数字(9999...
)是如此之大和精确,以至于JS
开始切割lower digits
以存储至少一些东西 - 源太大而无法保存在float
中。
这实际上是由于 JavaScript 引擎进行的内部float
转换而发生的,float
类型的理念是较高的数字比较低的数字更重要。
你的情况有些相似。这是因为浮点类型accuracy
取决于其值长度。因此,如果您的值太大或太小,您将失去较低数字的精度。
因此,您永远不应该信任float
,也不应该使用"==="的"=="将其与其他值进行比较 - 它可能是任何东西。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 试图了解如何使用parseFloat将字符串转换为数字
- parseFloat未将sql中的字符串值更改为float
- 当我的字符串太长时,ParseFloat 的奇怪行为
- Javascript方法链:正确的方法链toFixed()和parseFloat()返回一个数字,而不是一个字符串
- 当字符串包含非数字字符时,parseFloat()是如何工作的?
- 使用javascript使用parseFloat和parseInt无法正常工作的字符串获取价格
- 将数字而不是字符串传递给parseFloat()