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
