ID do artigo: 69333 - Última revisão: terça-feira, 16 de agosto de 2005 - Revisão: 2.2 Como contornar problemas ponto flutuante de precisão/comparação
SumárioPara testar confiável se duas variáveis de ponto flutuante de dupla ou expressões são iguais (usando o formato IEEE ou MBF), você deve subtrair as duas variáveis que estão sendo comparadas e testar se a diferença é menor do que um valor escolhido em limites de significância para precisão simples ou dupla. NENHUM OUTRO TESTE PARA IGUALDADE SERÁ CONFIÁVEL. As fórmulas a seguir teste confiável se X e Y são iguais:
MBF (Microsoft formato binário) é encontrado no Microsoft QuickBasic para MS-DOS (versão não co-processador QB.EXE somente), versões 1.0, 1.01, 2.0, 2.01 e 3.0 e no intérprete de GW-Basic da Microsoft para MS-DOS, versões 3.2, 3.22 e 3.23. As informações neste artigo também estão incluídas no arquivo de Ajuda fornecido com o padrão e Professional Editions do Microsoft Visual Basic para MS-DOS, versão 1.0. Mais InformaçõesObservação: os dígitos significativos em um número calculado podem ser perdidos devido ao seguinte: vários cálculos, especialmente a adição de números afastados no valor ou subtração de números semelhantes em valor. Quando um número resulta de vários cálculos, talvez seja necessário alterar seu teste para igualdade use menos dígitos significativos para refletir a perda de matemática de dígitos significativos. Se o teste de significância usa muitos dígitos significativos, você pode falhar ao descobrir que números em comparação comparados igualdade são realmente iguais dentro do limite de precisão de possível. No Basic produtos listados acima que usam o formato de ponto flutuante do IEEE, cálculos intermediários são executados em um registro de temporário interno 64-bit, tem mais bits de precisão que são armazenados em variáveis de precisão única ou dupla precisão. Isso geralmente resulta em uma instrução IF retornando um erro que afirma que o cálculo intermediário não é igual a expressão que estão sendo comparado. Por exemplo: Referência: Padrões do IEEE e MBF tentam equilibrar precisão e a precisão com intervalo numérico e velocidade. Precisão mede quantos bits significativos de precisão não são perdidos em cálculos. Precisão refere-se ao número de bits de mantissa, que determina quantos dígitos decimais podem ser representados. O formato IEEE e MBF armazenam números do formulário 1.x à potência de y (onde x e y são números de base 2; x é o mantissa e y é o expoente). Precisão única MBF tem 24 bits de mantissa, e precisão dupla tem 56 bits de mantissa. Todos os cálculos de MBF são executados dentro de apenas 24 ou 56 bits. Precisão única IEEE tem 24 bits de mantissa, e precisão dupla tem bits 53 de mantissa. No entanto, todos os precisão simples e precisão dupla IEEE cálculos no Visual Basic for MS-DOS, versão 1.0; QuickBasic para MS-DOS, versões 3.0/4.x; no compilador básica para MS-DOS, versões 6.0 e 6.0b; e PDS básica para MS-DOS, versões 7.0 e 7.1re executados em um registro temporário de 64 bits para maior precisão. Como resultado, os cálculos de IEEE são mais precisos do que MBF cálculos, apesar capacidade do MBF para representar mais bits de precisão dupla. A maioria dos números em notação decimal (base 10) não são necessário uma representação exata no formato de armazenamento de ponto flutuante binário (base 2) usado em tipos de dados de precisão simples e precisão dupla. O formato IEEE MBF não é possível representar exatamente (e deve arredondar) todos os números não são do 1.x formulário à potência de y (onde x e y são números de base 2). Os números que podem ser representados exatamente estão espalhados em um intervalo muito grande. Uma alta densidade de números representáveis é próximo 1.0 e-1.0, mas menos e menos representáveis números ocorrerem como os números de ir para 0 ou infinito. As limitações acima com freqüência causar Basic retornar resultados de ponto flutuante diferente, você poderia esperar. Obter mais informações sobre esse tópico podem ser encontradas na Base de dados de Conhecimento da Microsoft consultando as seguintes palavras: Floating e ponto e formato e QuickBasic O formato de ponto flutuante do IEEE está documentado nos seguintes manuais:
MBF e conversão e expoente 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 69333
(http://support.microsoft.com/kb/69333/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções deste artigo
|






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



Voltar para o início