在这个字体大小调整教程中:
作者使用 parseFloat 和第二个参数,我在这里读到:
应该指定提供的数字作为字符串的基数,以便您可以将其输入“0x10”并通过将 16 作为第二个参数将其识别为十六进制。
问题是,我测试过的浏览器似乎都没有这样做。
这些人是否对 Java 感到困惑?
在这个字体大小调整教程中:
作者使用 parseFloat 和第二个参数,我在这里读到:
应该指定提供的数字作为字符串的基数,以便您可以将其输入“0x10”并通过将 16 作为第二个参数将其识别为十六进制。
问题是,我测试过的浏览器似乎都没有这样做。
这些人是否对 Java 感到困惑?
不,他们对parseInt()
, 可以采用基数参数感到困惑。parseFloat()
,另一方面,只接受小数。这可能只是为了保持一致性,因为您应该始终将 radix 参数传递给,parseInt()
因为它可以将数字010
视为八进制,给出8
而不是正确的10
.
这是parseFloat()
, 与的参考parseInt()
。
这是 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
parseFloat 可以接受十进制以外的数字。
console.log(parseFloat(010)) // 8