Qualquer ponto flutuante binário pode ser formatado exatamente em decimal. A sequência resultante pode ser um pouco longa, mas é possível. No meu artigo sobre ponto flutuante , abordo a importância da precisão e agora quero essa função. Esse desafio é escrever um programa ou função que use um valor de ponto flutuante como entrada e formate uma string decimal exata como saída.
Para garantir que estamos trabalhando com os números de ponto flutuante corretos, um formato preciso deve ser fornecido como entrada para o programa. Este formato será dois inteiros Significand Exponent
, onde o valor real do ponto flutuante é Significand * 2 ^ Exponent
. Observe que qualquer valor pode ser negativo.
Específicos:
- O alcance e a precisão de pelo menos um flutuador de 32 bits devem ser suportados (nenhuma entrada vai além disso)
- O valor decimal formatado deve ser uma representação exata (basta fechar o suficiente para garantir que uma ponta redonda correta volte a flutuar não é o suficiente)
- Não confiamos que as funções de formatação de ponto flutuante da biblioteca padrão sejam corretas o suficiente nem rápidas o suficiente (ex:)
printf
e, portanto, elas não podem ser usadas. Você deve fazer a formatação. Funções de formatação / conversão integrais são permitidas. - Pode não haver zeros à esquerda ou à direita, exceto o zero inicial necessário na frente do
.
se não houver um componente de número inteiro - É permitida uma função ou programa inteiro.
Exemplos:
1 -2 => 0.25
17 -3 => 2.125
-123 11 => -251904
17 50 => 19140298416324608
23 -13 => 0.0028076171875
3 120 => 3987683987354747618711421180841033728
3 -50 => 0.00000000000000266453525910037569701671600341796875
-3 -50 => -0.00000000000000266453525910037569701671600341796875
10 -2 => 2.5
-12345 -3 => -1543.125
0 0 => 0
161 -4 => 10.0625
512 -3 => 64
O menor código vence.
.0
?
0.abc
não for um zero inicial, não será um zero abc.0
à direita.
.0
números inteiros ao lidar com números de ponto flutuante. Veja, por exemplo, Python: str(1.0) == '1.0'
versus str(1) == '1'
. Sua lógica ainda é inconsistente.