Opposite of toString(36)?

javascript, numbers, type-conversion

Solution

You could try parsing the integer and float parts separately with `parseInt`, as `parseFloat` does not support a radix:

function parseFloatInBase(n, radix) {
    var nums = n.split(".")

    // get the part before the decimal point
    var iPart = parseInt(nums[0], radix)
    // get the part after the decimal point
    var fPart = parseInt(nums[1], radix) / Math.pow(radix, nums[1].length)

    return iPart + fPart
}

// this will log 123.456:
console.log(parseFloatInBase("3f.gez4w97ry0a18ymf6qadcxr", 36))

I am dividing by `radix ^ numLength` because I am basically moving the decimal point over `numLength` spaces. You would do this just like in math class, because as you know dividing by 10 moves the decimal over one space, because most math is in base 10. Example:

123456 / 10 / 10 / 10 = 123.456

This is equivalent to

123456 / (10 * 10 * 10) = 123.456

And therefore

123456 / (10 ^ 3) = 123.456

Problem

`var a = (123.456).toString(36) //"3f.gez4w97ry0a18ymf6qadcxr"` Now, how do I revert back to the original number using that string? Note: `parseInt(number,36)` only works for integers.

Original source