为什么Javascript中的parseFloat('1/2')== 1

Shu*_*aid -4 javascript

我无法理解这一点:

parseFloat('1/2') == 1 Not Expected
parseFloat(1/2) == 0.5 Expected
parseFloat('0.5') == 0.5 Expected
parseFloat(0.5) == 0.5 Expected
Run Code Online (Sandbox Code Playgroud)

这是一个问题还是我做错了什么?另外,如何获得

parseFloat('1/2') == 0.5
Run Code Online (Sandbox Code Playgroud)

Dur*_*rga 10

正如在文档中提到的parseFloat

parseFloat解析其参数,并返回一个浮点数.如果遇到符号(+或 - ),数字(0-9),小数点或指数以外的字符,则返回到该点的值,并忽略该字符和所有后续字符.允许前导和尾随空格.

如此1/2对待为字符串.它只解析1.而忽略了休息.

您可以使用eval计算小数形式.


use*_*291 6

parseFloat不理解/作为一个分区的字符也不会做一个eval字符串输入.

它只是在遇到它不理解的角色时停止查看并返回正确解析的第一部分:

console.log(
  parseFloat("1/2"), // 1
  parseFloat("3/2"), // 3
  parseFloat("1kahsdjfjhksd2") // 1
)
Run Code Online (Sandbox Code Playgroud)

如果您确实要将字符串评估"1/2"为数字0.5,则可以使用eval.要小心,因为使用eval可能存在安全风险,调试速度慢且难以调试.

console.log(
  eval("1/2")
);
Run Code Online (Sandbox Code Playgroud)