当字符串包含非数字字符时,parseFloat()是如何工作的?

How does parseFloat() work when the string contains non-numeric characters?

本文关键字:何工作 工作 字符串 数字字符 parseFloat 包含非      更新时间:2023-09-26

我在执行parseFloat()时遇到问题-我不明白为什么它产生以下输出:

document.write(parseFloat("6e2") + "<br />"); //output is 600 why?
document.write(parseFloat("6b2") + "<br />"); //output is 6 why?
document.write(parseFloat("6c2") + "<br />"); //output is 6 why?

你能告诉我这个脚本是如何工作的吗?

6e2生成600,因为它将您的输入视为科学记数法。

6e2 == 6 × 102 == 600

其他两个产生6,因为parseFloat解析了6,然后输入它无法转换为数字,所以它停止,并返回到目前为止找到的结果。

每MDN:

parseFloat是一个顶级函数,与任何函数都没有关联对象。

parseFloat解析它的参数字符串,并返回一个浮点数号码。如果遇到符号(+或-)以外的字符,数字(0-9)、小数点或指数,它返回值直到那一点,忽略了那个性格和所有的成功字符。

如果第一个字符不能转换为数字,则使用parseFloat返回NaN。

出于算术目的,NaN值不是任何基数形式的数字。您可以调用isNaN函数来确定结果是否为parseFloat是NaN。如果NaN被传递给算术运算,则操作结果也将为NaN。

parseFloat()函数判断指定字符串的第一个字符是否为数字。如果是number,则解析该字符串,直到到达该数字的末尾,并将该数字作为数字返回,而不是字符串。

so parseFloat("6b2")返回6.

so parseFloat("6c2")返回6.

对于第一个,这是因为它将e视为指数符号(^)

其他两个只有6,因为一旦数字结束,它会忽略其余的