Exporta para o Excel causa conversão de inteiro intermitente para decimal

0

Alguém sabe por que ao exportar dados para o Excel, alguns dos dígitos são alterados de números inteiros ou inteiros para decimais com 5 ou mais dígitos. Por exemplo, 800 se tornará 799,9999996 ou poderá se tornar 800,00005. Não faz isso para todas as células com um número - parece não haver consistência alguma.

Existe uma maneira de impedir que isso aconteça ou é algo inerente aos bancos de dados?

Esta questão me incomodou durante anos, e parece que não consigo encontrar uma resposta em nenhum lugar, mas talvez alguém esteja aqui agora.

Obrigado!

    
por Heather 13.01.2016 / 18:39

1 resposta

0

Nós, humanos, estamos acostumados a usar "base dez" para representar números.

Isso define algumas constantes específicas como "irracionais" (consulte link ), por exemplo: 1/3, 1/7, raiz quadrada dois, PI são alguns deles.

Agora, se você escolher usar a base dois (como fazem os computadores), os números irracionais mudam; por exemplo. 1/10 é um, consistindo de "0.000110011" na "calculadora" que tenho no Ubuntu; quando mudado para "programação e modo binário (base dois). Os 1's à direita do ponto decimal agora representam 1/16 + 1/32 + 1/256 + 1/512 que é igual a" 0.099609375 "em decimal - o que é bastante perto de 1/10, mas não exatamente.

O mesmo vale para um conjunto de valores. Qual? Eu não posso dizer, mas tenho certeza que há vários deles.

Agora, além disso, adicione os efeitos de uma representação de ponto flutuante de precisão limitada. usando apenas 32 bits (ref: Descrição do formato aqui , compare com " 8 + E2 "para o decimal).

1/10 (decimal) = 0.0 0011 0011 0011 0011 ... (binário)

Para o que vale a pena: 800 representado como binário não deve aparecer com decimais estranhos; como 8 = 2 ^ 3 e 2 é 2 ^ 0, ambos simples base dois números, armazenados como tal em representação de ponto flutuante internamente em computadores.

    
por 13.01.2016 / 19:08