Este comportamento do Excel é esperado com um grande número hexadecimal?

3

Desculpe pelo título vago da pergunta, mas não tenho certeza da melhor maneira de entender isso.

Quando cole o seguinte número em uma célula do Excel:

5000097208326954

aparece como

5E+15

Tudo bem. Entendi. No entanto, quando olho na barra de funções, aparece como

5000097208326950

Isso eu não entendo. O comportamento parece ser independente de qualquer Formatação anterior que eu possa colocar na célula.

Isso está no Excel 2003 SP3.

Estou sentindo falta de algum comportamento sutil esperado ou isso é um bug?

    
por Dancrumb 03.11.2010 / 18:40

5 respostas

6

Alguém provavelmente virá com uma explicação melhor e uma correção, mas basicamente os computadores armazenam apenas uma quantidade específica de dígitos significativos ao representar números de ponto flutuante e / ou números inteiros grandes. Excel (pelo menos por padrão), apenas fornece os primeiros 15 dígitos do número e, em seguida, descarta o restante. Você pode verificar isso adicionando dígitos extras ao final do seu número, f.ex. 5000097208326954123, e esses dígitos serão arredondados para 5000097208326950000.

Como sidenote, você provavelmente tem o sistema numérico Hexadecimal confundido com Notação científica

    
por 03.11.2010 / 19:12
3

O Excel faz tudo como números de ponto flutuante de precisão dupla. (64 bits binários no total)

que dá a você cerca de 14 a 15 dígitos em decimal.

5000 097 208 326 954

tem 16 dígitos. Se você fizer isso no excel ...

A1 = 5000097208326954

A2 = A1 +1

A3 = A2-A1

A3 exibirá 0.

Divulgação completa: sou membro da ACM e sou obrigado a falar ao público sobre os riscos da computação. Está no nosso código de conduta.

Por favor, não use o Excel para algo crítico.

Você obterá respostas mais precisas com uma calculadora científica de bolso.

O Excel é escrito em C / C ++ e usa números de 64 bits. Ele também usa as bibliotecas de ponto flutuante da Microsoft para calcular funções como sin, cos e exp. Essas bibliotecas são bastante imprecisas em comparação com as científicas, mesmo operando nos mesmos números de tamanho.

O ponto flutuante é bom para coisas simples, mas é horrível para o trabalho científico ou engenharia séria, eles são muito imprecisos. Os métodos numéricos em que você adiciona e multiplica números repetidamente ficam feios rapidamente em ponto flutuante quando os 15 dígitos de precisão desaparecem, um dígito a cada 4 multiplicações.

O ponto flutuante é ruim para o trabalho Financeiro (0.2 é um número recorrente infinito em um ponto flutuante binário). Então, se você adicionar US $ 0,2 mil vezes, algum dinheiro desaparecerá. Programadores no mundo financeiro usam números de precisão infinita onde precisam (como escrever números no papel) E, em seguida, use funções especiais para fazer cálculos matemáticos que, quando todos os arredondamentos se somam, nenhum dinheiro desaparece.

Os programadores da velha escola usavam FORTRAN para matemática, que faz as contas em decimal, como você ou eu. As bibliotecas são muito precisas em FORTRAN, já que os usuários esperam fazer métodos numéricos; É pra isso que isto serve. As calculadoras usam decimal internamente também.

Eu tenho usado o Excel para reproduzir erros de arredondamento de matemática em programas em C antes.

Você pode obter gráficos bonitos do seu cálculo, indo erroneamente errado dessa maneira.

    
por 04.11.2010 / 03:51
2

Você está perguntando por que o último dígito aparece como 0 em vez de 4, sim?

Acredito que o este link contém o responda. Se você olhar em Especificações de cálculo, a precisão do número máximo é de 15 dígitos. Olhando para as outras especificações, parece que o Excel provavelmente ainda está mantendo o valor total do número digitado, então, se você usar o número em uma fórmula, ele ainda deve ser calculado corretamente.

Para ser honesta, toda essa coisa de números significativos escapou da minha compreensão na faculdade, então eu não poderia dizer por que o excel foi criado dessa maneira.

Este fórum pode dar-lhe indicações para exceder as limitações incorporadas se necessário.

Além disso, como você formata o Excel para reconhecer o valor como sendo HEX em vez de DEC?

    
por 03.11.2010 / 19:13
2

Como já foi mencionado, essa é uma limitação de 15 dígitos significativos quando o Excel armazena números. Se este não for um número que você precise usar para calcular qualquer coisa de acordo com seu valor, mas uma referência como um número de série ou um código de produto, sua melhor opção seria formatar a célula como texto (em vez do padrão de geral ) antes de colá-lo, então ele manterá todos os dígitos. Isso também evitará que ele tente ser inteligente e mostre que é notavelmente científico "útil".

Claro, se esse é um número hexadecimal (mas você escolheu um exame sem um dígito maior que 9), então definitivamente não quer que o Excel o trate como um número . a) porque ele assumirá que é decimal, e isso falhará quando houver letras nele. b) isso significaria que o número é ainda maior em magnitude, e se você convertê-lo em decimal, você estaria acima dos 15 dígitos.

    
por 04.11.2010 / 12:32
0

Clique com o botão direito do mouse em uma célula ou em todas as células > Formatar células > Escolha um destes formatos:

  • número (ou suas variantes): para reconhecer como um valor numérico
  • text: a melhor opção, porque se você puder usar 0 no lado esquerdo, eles aparecerão

Bem, não consegui ver essa solução aqui - apenas alguma discussão sobre notação científica ou um possível erro sobre seus números hexadecimais.

    
por 25.04.2011 / 14:12