这些函数将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))
我不确定这是否是您要找的东西,但希望对您有所帮助。