Difrença Entre Tipos de Variáveis
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.
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
Curtidas 0
Respostas
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).
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
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
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