> For the complete documentation index, see [llms.txt](https://mentebinaria.gitbook.io/manual-da-linguagem-gnu-c/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mentebinaria.gitbook.io/manual-da-linguagem-gnu-c/11.-tipos-primitivos/tipos-de-dados-de-ponto-flutuante.md).

# 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 [*Constantes de Ponto Flutuante*](#user-content-fn-1)[^1].

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 [*Ponto Flutuante em Profundidade*](#user-content-fn-2)[^2] para mais informações.

[^1]:

[^2]: Pendente de tradução


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://mentebinaria.gitbook.io/manual-da-linguagem-gnu-c/11.-tipos-primitivos/tipos-de-dados-de-ponto-flutuante.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
