20

在这个字体大小调整教程中:

快速轻松地调整字体大小

作者使用 parseFloat 和第二个参数,我在这里读到:

parseFloat() 带两个参数

应该指定提供的数字作为字符串的基数,以便您可以将其输入“0x10”并通过将 16 作为第二个参数将其识别为十六进制。

问题是,我测试过的浏览器似乎都没有这样做。

这些人是否对 Java 感到困惑?

4

3 回答 3

37

不,他们对parseInt(), 可以采用基数参数感到困惑。parseFloat(),另一方面,只接受小数。这可能只是为了保持一致性,因为您应该始终将 radix 参数传递给,parseInt()因为它可以将数字010视为八进制,给出8而不是正确的10.

这是parseFloat(), 与的参考parseInt()

于 2011-12-18T23:27:09.927 回答
1

这是 parseFloat 的快速版本,它确实需要一个基数。它不支持科学记数法。给定字符串中数字超出基数时的未定义行为。当小数点后给出太多数字时,也会表现不佳。

function parseFloatWithRadix(s, r) {
  r = (r||10)|0;
  const [b,a] = ((s||'0') + '.').split('.');
  const l1 = parseInt('1'+(a||''), r).toString(r).length;
  return parseInt(b, r) + 
    parseInt(a||'0', r) / parseInt('1' + Array(l1).join('0'), r);
}

parseFloatWithRadix('10.8', 16) 给出 16.5

要点:https ://gist.github.com/Hafthor/0a60f918d50113600d7c67252e68a02d

于 2021-04-10T23:36:42.963 回答
-3

parseFloat 可以接受十进制以外的数字。

console.log(parseFloat(010)) // 8

于 2020-06-23T16:27:03.630 回答