Eu simplesmente não consigo entender os números de ponto fixo e ponto flutuante devido à dificuldade de ler definições sobre eles em todo o Google. Mas nenhum que eu li oferece uma explicação simples o suficiente do que eles realmente são. Posso obter uma definição simples com exemplo?
numbers
computer-science
representation
user942451
fonte
fonte
Respostas:
Um número de ponto fixo tem um número específico de bits (ou dígitos) reservados para a parte inteira (a parte à esquerda do ponto decimal) e um número específico de bits reservados para a parte fracionária (a parte à direita do decimal ponto). Não importa quão grande ou pequeno seja o seu número, ele sempre usará o mesmo número de bits para cada porção. Por exemplo, se seu formato de ponto fixo fosse decimal
IIIII.FFFFF
, o maior número que você poderia representar seria99999.99999
e o menor número diferente de zero seria00000.00001
. Cada pedaço de código que processa esses números deve ter um conhecimento integrado de onde está o ponto decimal.Um número de ponto flutuante não reserva um número específico de bits para a parte inteira ou fracionária. Em vez disso, ele reserva um certo número de bits para o número (chamado de mantissa ou significando ) e um certo número de bits para dizer onde está a casa decimal (chamada de expoente ). Portanto, um número de ponto flutuante que ocupou 10 dígitos com 2 dígitos reservados para o expoente pode representar um maior valor de
9.9999999e+50
e um menor valor diferente de zero de0.0000001e-49
.fonte
-9.9999999e+50
.00000.00001
? Estou esperando ver em00000.00000
vez disso. Além disso, você tem alguma referência que forneça mais detalhes sobre números de ponto fixo?Um número de ponto fixo significa apenas que há um número fixo de dígitos após o ponto decimal. Um número de ponto flutuante permite um número variável de dígitos após o ponto decimal.
Por exemplo, se você tem uma maneira de armazenar números que requer exatamente quatro dígitos após o ponto decimal, então é um ponto fixo. Sem essa restrição, é um ponto flutuante.
Freqüentemente, quando o ponto fixo é usado, o programador realmente usa um número inteiro e então assume que alguns dos dígitos estão além do ponto decimal. Por exemplo, posso querer manter dois dígitos de precisão, então um valor de 100 significa na verdade 1,00, 101 significa 1,01, 12345 significa 123,45, etc.
Os números de ponto flutuante são de uso mais geral porque podem representar números muito pequenos ou muito grandes da mesma maneira, mas há uma pequena penalidade em ter que ter armazenamento extra para onde vai a casa decimal.
fonte
Do meu entendimento, a aritmética de ponto fixo é feita usando números inteiros. onde a parte decimal é armazenada em uma quantidade fixa de bits ou o número é multiplicado por quantos dígitos de precisão decimal são necessários.
Por exemplo, se o número
12.34
precisar ser armazenado e precisarmos apenas de dois dígitos de precisão após o ponto decimal, o número será multiplicado por100
para obter1234
. Ao realizar matemática neste número, usaríamos este conjunto de regras. Somando5620
ou56.20
a este número resultaria6854
em dados ou68.54
.Se quisermos calcular a parte decimal de um número de ponto fixo, usamos o operando módulo (%).
12,34 (pseudocódigo):
Os números de ponto flutuante são uma história completamente diferente na programação. O padrão atual para números de ponto flutuante usa algo como 23 bits para os dados do número, 8 bits para o expoente e 1, mas para o sinal. Veja este link da Wikipedia para mais informações sobre isso.
fonte
O termo 'ponto fixo' refere-se à maneira correspondente na qual os números são representados, com um número fixo de dígitos após, e às vezes antes, do ponto decimal. Com a representação de ponto flutuante, o posicionamento do ponto decimal pode 'flutuar' em relação aos dígitos significativos do número. Por exemplo, uma representação de ponto fixo com uma convenção de colocação de ponto decimal uniforme pode representar os números 123,45, 1234,56, 12345,67, etc, enquanto uma representação de ponto flutuante pode, além disso, representar 1,234567, 123456,7, 0,00001234567, 1234567000000000, etc.
fonte
Pegue o número 123.456789
O ponto flutuante permite representar quase todos os números com grande precisão. Fixed é menos preciso, mas mais simples para o computador.
fonte