这些函数将radix作为参数:


num.toString(radix);
parseInt("123", radix);


是否还有其他采用radix(以数字为底)的函数或方法,
因为我想使用parseFloat("1A.B4",radix)之类的东西。

但是,由于我没有想到它们很多,因此,如果您知道它们的名称,请说出它们的名称,可能会很有用,谢谢。

编辑:
是parseFloat(“ 1A.B4”,16)应该为26.703125。
如果您查看num.toString(radix),它支持2到36的底数

在Firefox控制台(333.444)中。toString(36)等于“ 99.fzf9i56mi”

最佳答案

@Paulpro's comment泛化为一个函数,您可以这样重新定义parseFloat()



parseFloat = function parseFloat (string, radix = 10) {
  if (radix == 10) {
    return this(string)
  }

  const [iString, fString = '0'] = string.split('.')
  const iNumber = parseInt(iString, radix)
  const fNumber = parseInt(fString, radix)
  const fLength = Math.max(fNumber.toString(radix).length, fString.length)
  const sign = Infinity / iNumber === Infinity ? 1 : -1

  return iNumber + sign * fNumber / radix ** fLength
}.bind(parseFloat)

console.log(parseFloat('1A.B4', 16))
console.log(parseFloat(0.05.toString(16), 16))
console.log(parseFloat('7', 16))
console.log(parseFloat('-0.8', 16))





我不确定这是否是您要找的东西,但希望对您有所帮助。

09-16 23:20