Não há arredondamento, o resultado é errado mesmo!
Os valores dos operandos são originais.

 Como: *0,621371 * 1e2 *é igual a* 62,137100000000004*?
Como: *0,6213711 * 1e2 *é igual 1* 62.13710999999999*?

Já o cálculo abaixo funciona corretamente:
*0,621372 * 1e2 *é igual a* 62,1372*?

Nota: o operando *1e2* é uma notação científica matemática que representa
o número *100*.

Flex não é confiável para trabalhar com Notação Científica
Matemática<http://pt.wikipedia.org/wiki/Nota%C3%A7%C3%A3o_cient%C3%ADfica>
?




Em 26 de maio de 2010 15:34, デビデソヌ Davidson Silva <
[email protected]> escreveu:

> Use a função Math.floor para arredondar o valor............
>
> Em 26 de maio de 2010 15:24, Mário Júnior <[email protected]> escreveu:
>
>
> Acho q pelo contrário,  não é uma *imprecisão* mas uma *precisao*.
>> O valor exibido foi o valor preciso, enquanto vc esperava por um valor
>> "arredondado".
>>
>> Essas questoes matemáticas estão relacionadas com todas as linguagens, dá
>> uma olhada em:
>> http://en.wikipedia.org/wiki/Floating_point
>>
>> Vai ver q existe um "problema" em representar valores com ponto flutuante
>> e precisos em binário, portanto cada linguagem/tecnologia/empresas/etc...
>> adotou uma forma de corrigir isso. Por isso, também, q pode acontecer de vc
>> ter valores precisos diferentes a depender da linguagem onde vc faz a conta,
>> mas tal diferença é muito pqna na precisão do valor que depois ao ser
>> "arredondado" passa a ser igual em todas as linguagens. No caso do Flex, é
>> simples, acredito q usando um Formatter com rounding="nereast" deve resolver
>> isso.
>>
>> Tem, também, um componente de terceiro que é muito recomendado para
>> aplicações financeiras, segue link:
>> http://www.flexdev.com.br/home/flex-fazendo-contas-corretamente/
>>
>>
>> []s
>>
>>
>>
>>
>>
>>
>> Em 26 de maio de 2010 15:03, Vítor Luís Pauda da Silva <
>> [email protected]> escreveu:
>>
>>  Pessoal,
>>>
>>> encontrei um bug no resultado deste cálculo numa aplicação desktop:
>>>
>>> <mx:Button label="Resultado é..." id="btnConverte" 
>>> click="*btnConverte.label=String(0.621371
>>> * 1e2*)"/>
>>>
>>> O resultado correto deveria ser *62.1371* e dá *62.137100000000004*.
>>>
>>> e se eu sobstituir o operando 0.621371 por 0.6213711, dá como resultado
>>> *62.1370999999999*.
>>>
>>>  O operando *1e2* equivale a *100*, pois é igual a *1 * 10^2*.
>>>
>>>
>>>
>>> Atenciosamente,
>>> Vítor Luís
>>>
>>> --
>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>> Para enviar uma mensagem, envie um e-mail para [email protected]
>>> Para sair da lista, envie um email em branco para
>>> [email protected]
>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>>
>>
>>
>> --
>> Mario Junior
>> http://blog.mariojunior.com/
>> @mariojunior
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
Atenciosamente,
Vítor Luís

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a