Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eae galera, beleza?
Hoje eu estava um pouco curioso e resolvi testar uma hipótese. Será que se dividirmos um número inteiro sempre por dois chegaremos a um número indivisível? Como isto daria muito trabalho resolvi escrever um algoritmo no Visualg. O meu código é o seguinte:
algoritmo "Teste da razão 2"
// Função : Encontrar um número indivisível
// Autor : XikuGuarana
// Data : 08/03/2017
// Seção de Declarações
var
n1: inteiro
resultado: real
inicio
// Seção de Comandos
EscrevaL("Digite um número inteiro qualquer:")
Leia(n1)
resultado <- n1
LimpaTela
Se(n1 > 0) entao
repita
resultado <- (resultado / 2)
EscrevaL(resultado)
ate resultado = 0
FimSe
EscrevaL("========== Resultado ==========")
EscrevaL("O menor número encontrado foi " , resultado)
fimalgoritmo
Pois bem. A ideia era que a repetição só acabasse quando fosse encontrado o número zero. E para minha surpresa, após alguns segundos o programa foi encerrado e o menor número encontrado foi 4.94065645841247E-324. Alguém tem ideia do que este número significa? Por que as divisões não continuaram ocorrendo?
Desde já agradeço toda a atenção e ajuda prestadas. Um forte abraço.
4.94065645841247E-324 = 4.94065645841247 x 10 ^ (-324)
Ou seja, 0.0000(mais 320 zeros)494065645841247.
A arquitetura do computador possui limite inferior e superior quanto aos números que podem ser representados (isso sem falar das limitações p/ dízimas periódicas). Esse é, provavelmente, o menor número que seu PC consegue representar
https://arstechnica.com/civis/viewtopic.php?t=867662