programadores de oro de la entrevista - preguntas cara 05.02 revoluciones cadena binaria (interruptor de punto flotante binario decimal, por 2 redondeada)

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;
    }
};
Publicados 760 artículos originales · ganado elogios 947 · vistas 270 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/105050446
Recomendado
Clasificación