Veio do texto "introducao_caracteres.html" de 2017/05/01 Representação em ponto flutuante
A técnica de representação de números em ponto flutuante consiste em separar os bits do número em duas partes, além do sinal, a mantissa e o expoente, da seguinte forma:
Esta técnica de representação é a mais utilizada nos computadores, ela utilizar um bit para sinal, uma quantidade pequena de bits para o expoente e uma quantidade maior de bits para a parte "principal" do número. Em um dos padrões de representação (IEEE 754) o número é representado com 11 bits para o expoente e 52 bits para a mantissa.
Exemplo de representação em ponto flutuantePara ilustrar o funcionamento de ponto flutuante, suponha um computador que use decimal para a mantissa e binário para expente. Se o computador tiver apenas 3 dígitos para mantissa e 2 bits para o expoente, assim teríamos p=3 e -3<=e<=1. A lógica utilizada para separar os 4 possíveis binários (00, 01, 10 e 11) foi: o primeiro bit ligado implica valor negativo, mas o binário 10 é ignorado (por corresponder ao decimal -0, assim -1<e<1.
Deste modo, o maior valor real que pode ser representado seria o 9.99, pois tomando a maior mantissa e maior expoente, teríamos 101 x 0.999 = 9.99,
Já o menor positivo seria o 0.0001, pois tomando a menor mantissa positiva e menor expoente possível (-1), teríamos 10-1 x 0.001 = 0.0001,
Entrada e saída de flutuantes em C e em PythonEm C deve-se utilizar o formatador %f para indicar que os bits devem ser tratados como número em ponto flutuante, enquanto em Python deve-se utilizar a função float(...), como indicado no exemplo abaixo.
C | Python 2 | Python 3 | |
---|---|---|---|
|
Aos alunos estudando com a linguagem C, tomem um cuidado adicional: o compilador C aceita utilizar o formatador de inteiro na leitura e na impressão de uma variável em flutuante. Ele trunca o valor, assim se tiver float x=1.5; e fizer printf("x=%d\n", x);, não haverá erro de compilação e será impresso x=1.