1. Introducción al tema
Convierte un número binario en una cadena. Dado un número real entre 0 y 1 (como 0,72), el tipo es doble e imprime su expresión binaria. Si el número no está entre 0 y 1, o no se puede representar con precisión en binario dentro de 32 bits, se imprime "ERROR".
Ejemplo 1:
Entrada: 0,625
Salida: "0,101"
Ejemplo 2:
Entrada: 0.1
Salida: "ERROR"
Mensaje: 0.1 no se puede representar con precisión mediante binario
Mensaje:
Los 32 bits incluyen los dos bits "0" en la salida.
Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/bianry-number-to-string-lcci Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.
Dos ideas para resolver problemas
Para el examen de esta pregunta, se utiliza el método de " multiplicar por 2 y redondear hacia arriba " para convertir un número decimal en un número binario . Consulte el código para obtener más detalles.
Tres, código de resolución de problemas
class Solution {
public:
string printBin(double num) {
if(num > 1 || num < 0)
return "ERROR";
string res = "0.";
while(num > 0)
{
num *= 2; //小数部分不断乘2
if(num >= 1) //取出整数部分,添加到二进制小数的后边
{
res += "1";
num--; //更新十进制小数
}
else
res += "0";
if(res.size() > 32)
return "ERROR";
}
return res;
}
};