fork(27) download
# include <stdio.h>

void decimalParaBinario(int decimal) {
	char aux[1000000];
	int i, indice = 0;

	// simples conversão de decimal para binário:
	// divida o decimal por 2 enquanto ele for maior que 0,
	// sempre acumulando o resto das divisões, que compõem o número binário final.
	while (decimal > 0) {
		int resto = decimal % 2;
		aux[indice++] = resto + '0';

		decimal /= 2;
	}

	// o número binário em aux[] está invertido: 12d -->	 0011b.
	// abaixo ele será consertado: 12d --> 0011b --> 1100b.
	for (i = 0; indice > 0; indice--, i++) {
		printf("%c", aux[indice - 1]);
	}
}

void fracaoParaBinario(double fracao) {
	fracao = fracao - (int)fracao; // removendo a parte inteira: 12.25d --> 0.25d

	while (fracao != 0.0) {
		fracao *= 2;
		int resto = (int)fracao;
		fracao -= resto;

		printf("%d", resto);
	}
}

void decimalComFracaoParaBinario(double numero) {
	decimalParaBinario((int)numero);
	printf(".");
	fracaoParaBinario(numero);
	printf("\n");
}

int main() {
	double numero;

	numero = 12.25;
	decimalComFracaoParaBinario(numero);

	numero = 62.62510;
	decimalComFracaoParaBinario(numero);

	return 0;
}
Success #stdin #stdout 0s 3016KB
stdin
Standard input is empty
stdout
1100.01
111110.101000000000011010001101101110001011101011001