Manual da Linguagem GNU C
Doar para o tradutorDoar para os autores
  • Linguagem GNU C
  • Prefácio
  • 1️1. O Primeiro Exemplo
    • Fibonacci Recursiva
      • Cabeçalho da Função
      • Corpo da Função
    • Pilha e Estouro de Pilha
    • Fibonacci Iterativa
  • 📦2. Um Programa Completo
    • Exemplo de um Programa Completo
    • Explicação do Programa Completo
    • Programa Completo Linha por Linha
    • Compilando o Programa de Exemplo
  • 👜3. Armazenamento e Dados
  • 🥑4. Além dos Inteiros
    • Um Exemplo com Números Não Inteiros
    • Um Exemplo com Arrays
    • Variações para o Exemplo com Array
  • ✍️5. Sintaxe Lexical
    • Escreva Programas em Inglês!
    • Caracteres
    • Espaços em Branco
    • Comentários
    • Identificadores
    • Operadores e Pontuação
    • Continuação de Linha
  • ➕6. Aritmética
    • Aritmética Básica
    • Aritmética de Inteiros
    • Estouro de Inteiros
      • Estouro de Inteiros sem Sinal
      • Estouro de Inteiros com Sinal
    • Aritmética em Modo Misto
    • Divisão e Resto
    • Comparações Numéricas
    • Operações de Deslocamento
      • Deslocar Gera Novos Bits
      • Advertências em Operações de Deslocamento
      • Hacks com Deslocamento
    • Operações Bit-a-bit
  • 🟰7. Expressões de Atribuição
    • Atribuição Simples
    • Lvalues
    • Atribuição Modificadora
    • Operadores de Incremento e Decremento
    • Pós-incremento e Pós-decremento
    • Armadilha: Atribuição em Subexpressões
    • Escreva Atribuições em Instruções Separadas
  • 🕹️8. Expressões de Controle de Execução
    • Operadores Lógicos
    • Operadores Lógicos e Comparações
    • Operadores Lógicos e Atribuições
    • Expressão Condicional
    • Operador Vírgula
  • 🐫9. Gramática dos Operadores Binários
  • 🏁10. Ordem de Execução
    • Reordenação de Operandos
    • Associatividade e Ordenação
    • Pontos de Sequência
    • Pós-incremento e Ordenação
    • Ordenação de Operandos
    • Otimização e Ordenação
  • 🎲11. Tipos Primitivos
    • Tipos de Dados Inteiros
      • Inteiros Básicos
      • Tipos Com ou Sem Sinal
      • Inteiros Estreitos
      • Conversão entre Tipos Inteiros
      • Tipo Booleano
      • Variações de Inteiros
    • Tipos de Dados de Ponto Flutuante
    • Tipos de Dados Complexos
    • O Tipo Void
    • Outros Tipos de Dados
    • Designadores de Tipos
  • 🪨12. Constantes
    • Constantes do Tipo Inteiro
    • Tipos de Dados de Constantes do Tipo Inteiro
    • Constantes de Ponto Flutuante
    • Constantes de Números Imaginários
    • Constantes de Caracteres
    • Constantes do Tipo String
    • Constantes do Tipo String UTF-8
    • Códigos de Caracteres Unicode
    • Constantes do Tipo Caractere Largo
    • Constantes do Tipo String Larga
  • 📐13. Tamanho de Tipo
  • Apêndices
    • F - GNU Free Documentation License
    • G - GNU General Public License
Fornecido por GitBook
Nesta página

Isto foi útil?

Editar no GitHub
Exportar como PDF
  1. 11. Tipos Primitivos

Tipos de Dados de Ponto Flutuante

Ponto flutuante é o análogo binário da notação científica: internamente, representa um número como uma fração e um expoente binário; o valor é essa fração multiplicada pela potência de 2 especificada. (O padrão C nominalmente permite outras bases, mas no GNU C a base é sempre 2.)

Por exemplo, para representar o número 6, a fração seria 0,75 e o expoente seria 3; juntos representam o valor 0,75 * 2^3, ou seja, 0,75 * 8. O valor 1,5 usaria 0,75 como fração e 1 como expoente. O valor 0,75 usaria 0,75 como fração e 0 como expoente. O valor 0,375 usaria 0,75 como fração e -1 como expoente.

Esses expoentes binários são usados por instruções da máquina. Você pode escrever uma constante de ponto flutuante dessa forma, usando hexadecimal, se desejar; mas normalmente escrevemos números de ponto flutuante em decimal (base 10). Veja .

C tem três tipos de dados de ponto flutuante:

double Ponto flutuante de "dupla precisão", que usa 64 bits. Este é o tipo de ponto flutuante normal, e computadores modernos geralmente fazem seus cálculos de ponto flutuante nesse tipo ou em algum tipo mais amplo. Exceto quando há um motivo especial para fazer diferente, este é o tipo a ser usado para valores de ponto flutuante.

float Ponto flutuante de "precisão simples", que usa 32 bits. É útil para valores de ponto flutuante armazenados em estruturas e arrays, para economizar espaço quando a precisão total de double não é necessária. Além disso, a aritmética de precisão simples é mais rápida em alguns computadores, o que pode ser útil ocasionalmente. Mas não com frequência — a maioria dos programas não usa o tipo float.

Seria mais claro se float fosse o nome do tipo que usamos para a maioria dos valores de ponto flutuante; no entanto, por razões históricas, não é assim.

long double Ponto flutuante de "precisão estendida", com precisão de 80 bits ou 128 bits, dependendo da máquina em uso. Em algumas máquinas, que não possuem formato de ponto flutuante mais amplo do que double, este é equivalente a double.

A aritmética de ponto flutuante levanta muitas questões sutis. Veja para mais informações.

AnteriorVariações de InteirosPróximoTipos de Dados Complexos

Atualizado há 5 meses

Isto foi útil?

🎲