Difrença Entre Tipos de Variáveis

Delphi

22/09/2007

Olá,

Qual a diferença entre os tipos de varáveis extended e double?
Pelo que pesquisei, me parcem praticamente iguais.

Para cálculos de valores decimais com até 3 casas decimais, normalmente eu uso o tipo extended. Tá certo? É a melhor opção?

Obrigado.


Armindo

Armindo

Curtidas 0

Respostas

Mayron Cachina

Mayron Cachina

22/09/2007

Armindo,

Dá uma olhada no padrão IEEE 754 (que fala justamente sobre isso)
Tem essa página aqui: http://babbage.cs.qc.edu/courses/cs341/IEEE-754references.html

Para PCs, a unidade de ponto flutuante é de 80-bit. Em geral você encontra nos compiladores mais populares, 3 precisões: 32-bit (single ou float), 64-bit (double) e 80-bit (extended ou double double).
Extended é a mais precisa (19 ou 20 casas decimais), mas não é muito usada por questão de desempenho. Só é usada quando é realmente necessário a maior precisão possível. Alguns processadores tem unidades de 128-bit, o que permite uma precisão absurda (34 casas).


GOSTEI 0
Paulo Samurai

Paulo Samurai

22/09/2007

Complementando,

As vezes é interessante usar um tipo de ponto fixo ao invés de ponto flutuante, como é o caso do tipo currency. Ele armazena os pontos decimais como inteiro e estão sujeitos a erros mais controlados de aproximação.

Não é raro ouvir alguem que apos um determinado calculo tentou com o resultado fazer um ´if vD = 0 then´ (onde vD é uma variavel double) e por algum motivo nunca entrava neste if, ou o inverso testando se não é igual e sempre entrava mesmo quando vD parecia ter 0.

A questão é que um double pode parecer ter 0, quando na verdade tem 0.000000000000000009.... e isso não é zero ;). Variaveis do tipo currency são menos sujeitas a este erro e as vezes mais desejaveis

[]´s


GOSTEI 0
POSTAR