Artigo: 69333 - Última revisão: terça-feira, 16 de Agosto de 2005 - Revisão: 2.2 Como contornar problemas de precisão/comparação Floating-Point
SumárioPara testar fiável se duas variáveis de vírgula flutuante ou expressões são iguais (utilizando o formato de IEEE ou MBF), terá de subtrair as duas variáveis comparadas e testar se os respectivos diferença é menor do que um valor seleccionado nos limites de significância de precisão simples ou duplo. NENHUM OUTRO TESTE DE IGUALDADE IRÁ SER FIÁVEL. As seguintes fórmulas eficazmente teste se X e Y são iguais:
MBF (formato binário do Microsoft) encontra-se no Microsoft QuickBasic para MS-DOS (apenas QB.EXE coprocessador não versão), versões 1.0, 1.01, 2.0, 2.01 e 3.0 e no Microsoft GW-BASIC Interpreter para MS-DOS, versões 3.2, 3.22 e 3.23. As informações contidas neste artigo também estão incluídas no ficheiro de ajuda fornecido com o padrão e Professional as versões do Microsoft Visual Basic for MS-DOS, versão 1.0. Mais InformaçãoNOTA: algarismos num número calculado podem ser perdidas devido ao seguinte: vários cálculos, especialmente a adição de números muito separadamente no valor ou subtracção de números semelhantes no valor. Quando um número resultados de cálculos múltiplos, poderá ser necessário alterar o teste de igualdade utilize menos dígitos significativos para reflectir a matemática perda de algarismos significativos. Se o teste de significância utiliza demasiados dígitos significativos, poderá conseguir descobrir se os números comparados de igualdade estão realmente iguais dentro do limite de precisão possível. Numa base produtos listados acima que utilizar o formato de vírgula flutuante IEEE, cálculos intermédios são efectuados num registo de temporário interno 64 bits, que tem mais bits de precisão que são armazenados em variáveis de precisão simples ou dupla precisão. Muitas vezes, resulta numa instrução IF devolver um erro que indica que o cálculo intermédio não é igual à expressão comparadas. Por exemplo: Referência: Normas IEEE e no MBF tentam equilibrar a 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 na mantissa, que determina o número de casas decimais podem ser representadas. O formato de IEEE e MBF armazenam números de 1.x o formulário à potência de y (em que x e y são 2 números base; x é a mantissa e y é o expoente). MBF único precisão tem 24 bits de mantissa e dupla precisão tem 56 bits de mantissa. Todos os cálculos de MBF são executados dentro de 24 ou 56 bits. Precisão único IEEE tem 24 bits de mantissa e dupla precisão tem bits 53 do mantissa. No entanto, todos os precisão simples e dupla precisão 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 base para MS-DOS, versões 6.0 e 6.0b; e PDS base para o MS-DOS, versões 7.0 e 7.1re efectuados num registo 64-bit temporário para maior precisão. Como resultado, IEEE cálculos são mais precisos do que os cálculos de MBF, apesar capacidade do MBF para representar mais bits de precisão dupla. A maior parte dos números na notação decimal (base 10) não têm uma representação exacta no formato de armazenamento de vírgula flutuante binário (base 2) utilizado em tipos de dados de precisão simples e dupla precisão. Tanto o formato de IEEE MBF não é possível representar exactamente (e deve arredondar) todos os números que não estão de 1.x o formulário à potência de y (onde x e y são números base 2). Os números que podem ser representados exactamente são propagar-se através de uma enorme variedade. Uma alta densidade dos números representáveis estiver perto 1.0 e-1.0, mas menos e menos representáveis números ocorrem como os números de ir na direcção de 0 ou infinito. As limitações acima fazer Basic para devolver resultados de vírgula flutuante diferente do que seria de esperar. É possível encontrar na base de dados de conhecimento da Microsoft consultando as seguintes palavras mais informações sobre este tópico: Floating ponto e formato e QuickBasic O formato de ponto flutuante do IEEE está documentado na manuais seguintes:
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 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: 69333
(http://support.microsoft.com/kb/69333/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