1. Tema
número binario en cadena. Dado un número real comprendido entre 0 y 1 (por ejemplo, 0,72), escriba doble, la impresión de su representación binaria.
Si el número no está entre 0 y 1, o no puede ser exactamente binario dentro de la 32-bit con dicha impresión "ERROR".
示例1:
输入:0.625
输出:"0.101"
示例2:
输入:0.1
输出:"ERROR"
提示:0.1无法被二进制准确表示
提示:
32位包括输出中的"0."这两位。
Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/bianry-number-to-string-lcci
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.
2. Resolución de Problemas
- número de coma flotante binario multiplicado por 2, los bits redondeadas anexa al decimal binario
- punto de redondeo número entero de bits flotante, el proceso se repite hasta que el flotador se convierte en cero, si no es igual a 0, no se puede representar con precisión
class Solution {
public:
string printBin(double num) {
if(num < 0 || num > 1.0)
return "ERROR";
string ans = "0.";
int bits = 2;
while(num > 0)
{
num *= 2;//*2 进制数
if(num >= 1.0)
{
ans += '1';
num -= 1;//舍去整数位
}
else
ans += '0';
bits++;
if(bits > 32)
return "ERROR";
}
return ans;
}
};