Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ArthurBarros

ByteArray.readFloat com problema?

Recommended Posts

Estou dormindo mal a algumas noites, por conta do seguinte resultado:

 

var float:Number = 1.40;

var bytes:ByteArray = new ByteArray();

 

trace( float );

bytes.writeFloat( float );

trace( bytes.readFloat() );

 

O retorno dos traces nao e coerente:

>> 1.4

>> 1.39999976158142

 

Alguém consegue me explicar porque o retorno o valor de ambos nao e o mesmo ?

Estou usando AS3 e Flash Professional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a imprecisão normal.

 

Fassa o seguinte:

 

Tente converter de decimal para Float na unha.

 

O problema é que: EU NÂO SEI CONVERTER DECIMAL FRACIONÁRIO PARA BINÀRIO.(que vergonha! quando descobrir talvez eu poste um tópico com um link de onde achei)

 

Esse tipo de variavel tem 32 bits

Um é o sinal, 8 é o exponente.

O resto é a base

 

Essa base é tudo 0 e 1(assim como todos os bits dessa variavel(e das outras))

 

Não existe outro número.

Só 0 e 1, 1 e 0.

 

Na Eletrônica Digital nenhum BIT pode ter valor que não seje 0 ou 1.

 

Então eu acho que nessa doidera toda o número vai ser infinito, e como o byte não pode ser infinito o resto é jogado fora.(eu acho, vou descobrir quando aprender a converter)

 

É que minha professora não ensinou a converter decimal com fração, também não precisa disso no curso

 

EDIT:

 

Eu tava usando essa calculadora:

http://www.binarycon...cimal=049046052

E descobri que eu sei converter decimal fracionario para binario.

 

Acontece que a "base" não é numero binario normal. Está espresso de um geito diferente.

 

Eu descobri isso porque logo em baixo eu fiz a conta.

 

Eu tenho até a imagem: http://img29.imagesh...1333/contad.jpg

 

Se você perceber pela imagem, é uma dizima periódica.

 

E a única forma de o número binario da 1.4 é se ele tiver infinitos bits.

E como isso não existe tem esse erro.

 

Dê uma olhada: http://pt.wikipedia.org/wiki/IEEE_754#Convertendo_n.C3.BAmero_decimal_para_bin.C3.A1rio

 

http://engcompup.blo...ao-decimal.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.