Artigo: 125056 - Última revisão: quinta-feira, 24 de Fevereiro de 2005 - Revisão: 2.1 INFO: Precisão e precisão em cálculos Floating-Point
Nesta páginaSumárioExistem muitas situações em que precisão arredondamento, e precisão em cálculos de vírgula flutuante pode funcionar para gerar resultados surpreendente para o programador. Existem quatro regras gerais que devem ser seguidas:
Mais InformaçãoEm geral, as regras descritas acima aplicam-se para todos os idiomas, incluindo C, C++ e integrador. Os exemplos abaixo demonstram algumas das regras utilizando FORTRAN PowerStation. Todos os exemplos foram compilados utilizando FORTRAN PowerStation 32 sem quaisquer opções, excepto para o último que é escrito em C. Consulte o manual(s) FORTRAN fornecidos com o Microsoft FORTRAN para obter uma descrição das constantes numéricas e artigo 36068 (http://support.microsoft.com/kb/36068/EN-US/ ) para uma descrição da representação interna de valores de vírgula flutuante. EXEMPLO 1O primeiro exemplo demonstra duas coisas:
x = 1.100000000000000 y = 1.100000023841858 true = 1.320000000000000 (multiplying 2 double precision values) y = 1.320000052452087 (multiplying a double and a single) z = 1.320000081062318 (multiplying 2 single precision values) Código de exemploEXEMPLO 2Exemplo 2 utiliza a equação quadratic. Demonstra a que mesmo dupla precisão cálculos não são perfeitos, e a que o resultado de um cálculo deve ser testado antes é dependia se erros pequenos podem ter resultados drásticas. A entrada da função de raiz quadrada no exemplo 2 apenas é ligeiramente muito negativa, mas ainda não é válido. Se os cálculos de precisão dupla não tinham pequenos erros, o resultado seria:Root = -1.1500000000 Run-time error M6201: MATEMÁTICO -sqrt: erro de domínio Código de exemploEXEMPLO 3Exemplo 3 demonstra que devido a optimizações ocorrer mesmo se optimização não está activada, os valores podem temporariamente mantêm uma precisão mais elevada do que o esperado e não é muito recomendável com o teste dois valores de ponto flutuante para igualdade.Neste exemplo, dois valores são iguais e não iguais. No primeiro se, o valor de Z continua na pilha do coprocessador e tem a mesma precisão como Y. X, por isso, não é igual Y e a primeira mensagem é impressa. Na altura do se segundo Z tinha de ser carregado a partir da memória e assim tivesse a mesma precisão e valor de X e a segunda mensagem também é impressa. Código de exemploEXEMPLO 4A primeira parte do código de exemplo 4 calcula a diferença mais pequena possível entre dois números perto para 1.0. Isto é adicionando um único bit representação binária do 1.0.x = 1.00000000000000000 (one bit more than 1.0) y = 1.00000000000000000 (exactly 1.0) x-y = .00000000000000022 (smallest possible difference) A segunda parte do código de exemplo 4 calcula a diferença mais pequena possível entre 2 números perto para 10.0. Novamente, isto é adicionando um único bit representação binária de 10.0. Repare que a diferença entre números junto 10 é maior do que a diferença próximo de 1. Demonstra o princípio geral que quanto maior for o valor absoluto de um número menor com precisão pode ser armazenado um determinado número de bits. x = 10.00000000000000000 (one bit more than 10.0) y = 10.00000000000000000 (exactly 10.0) x-y = .00000000000000178 x = 4024000000000001 Hex y = 4024000000000000 Hex x = 3FF0CCCCCCCCCCCD (Hex representation of 1.05D0) x-1 = .05000000000000004 Código de exemploEXEMPLO 5C, constantes flutuantes são duplica por predefinição. Utilize um "f" para indicar um valor de vírgula flutuante, tal como em "89.95f".A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 125056
(http://support.microsoft.com/kb/125056/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções de Artigos |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar ao topo