Por ejemplo, si convierto el número 1.1 a binario (o cualquier otra base numérica), ¿es posible devolverlo al número flotante decimal?
console.log((1.1).toString(2)); console.log((1.1).toString(8)); console.log((1.1).toString(16));JS tiene algunos métodos integrados para analizar números. Usar parseFloat aquí sería ideal, sin embargo, desafortunadamente, parseFloat no le permite especificar la raíz (base) bajo la cual se debe analizar la cadena.
Sin embargo, la función parseInt le permite especificar la raíz, pero solo puede funcionar con números enteros y fallará al intentar analizar un decimal. Pero con un poco de matemática, puede analizar las partes enteras y decimales de su cadena por separado y luego recombinarlas para obtener el número convertido.
Tal vez algo como:
console.log((1.1).toString(2)); console.log((1.1).toString(8)); console.log((1.1).toString(16)); function parseInBase(num_str, base) { const [integer_part, decimal_part] = num_str.split("."); const integer_part_num = parseInt(integer_part, base); if (!decimal_part) return integer_part_num; // Trim trailing zeroes: const sanitized_dec_part = decimal_part.replace(/0+$/, ""); const decimal_part_num = parseInt(sanitized_dec_part, base); return integer_part_num + decimal_part_num / base**sanitized_dec_part.length; } console.log(parseInBase((1.1).toString(2), 2)); console.log(parseInBase((1.1).toString(8), 8)); console.log(parseInBase((1.1).toString(16), 16));