Calculadora da Precisão da Vírgula Flutuante (IEEE 754: Float, Double, Meia, bfloat16)
Quão grosseira é a reta numérica à volta de qualquer valor em meia precisão, bfloat16, precisão simples ou dupla: o intervalo até ao número seguinte, o épsilon da máquina, os algarismos fiáveis e o maior inteiro ainda exato.
Resultados
O que faz esta ferramenta
Os números em vírgula flutuante só estão igualmente espaçados dentro de cada potência de dois: o intervalo duplica sempre que o valor duplica, mas continua a ser a mesma fração do valor. É por isso que 0,1 + 0,2 não dá exatamente 0,3, que um float de 32 bits deixa de contar inteiros em 16 777 216, e que um número do JavaScript só é exato para inteiros até 2⁵³ (9 007 199 254 740 992). A partir daí o intervalo num double é 2, depois 4, depois 8. Use o intervalo, e não o número de algarismos mostrados, para julgar até onde se pode confiar num resultado.
Fórmula
gap (ULP) = 2^(⌊log₂|x|⌋ − p) · ε = 2^−p · digits ≈ (p + 1) log₁₀ 2 · largest gap-free integer = 2^(p+1) (p = 10, 7, 23, 52 fraction bits)
Variáveis
| Símbolo | Significado | Unidade |
|---|---|---|
fm | Formato do número | — |
x | Valor a examinar | — |
U | Intervalo até ao número representável seguinte nesse valor | — |
R | Esse intervalo como fração do valor | — |
EP | Épsilon da máquina (intervalo logo acima de 1) | — |
DG | Algarismos decimais fiáveis | — |
MI | Maior inteiro antes de os inteiros começarem a saltar | — |
MV | Maior valor finito | — |
Exemplo resolvido
- Formato do número4
- Valor a examinar0,1
- Intervalo até ao número representável seguinte nesse valor1,38778e-17
- Esse intervalo como fração do valor1,38778e-16
- Épsilon da máquina (intervalo logo acima de 1)2,22045e-16
- Algarismos decimais fiáveis15,95
- Maior inteiro antes de os inteiros começarem a saltar9,0072e+15
- Maior valor finito1,79769e+308
Limitações
- A fórmula assume condições ideais: sem perdas por atrito, sem resistência do ar e sem perdas de rendimento, a não ser que as introduza.
- O cálculo é feito com precisão total e apenas a apresentação é arredondada. Se copiar um valor intermédio e voltar a escrevê-lo, podem surgir pequenas diferenças.