Ok, deu certo.

var numFormat:NumberFormatter = new NumberFormatter();
numFormat.precision = 2;
numFormat.rounding = NumberBaseRoundType.NEAREST;
  ----- Original Message ----- 
  From: Mário Júnior 
  To: flexdev@googlegroups.com 
  Sent: Friday, March 06, 2009 12:17 PM
  Subject: [flexdev] Re: Erro ao multiplicar variáveis


  nao to com eclipse agora... mas no numberformater tem um esquema de rounding 
e vc coloca-o como nereast.
  tanto em mxml como as3 tem como fazer.




  2009/3/6 Alberto <alberto.ferre...@tan.com.br>

    Então estou fazendo alguma coisa errada, tem como alguém dar uma olhada? 
Para mim ainda aparece 67.19

    var numFormat:NumberFormatter = new NumberFormatter();
    numFormat.precision = 2;

    var a:Number = 6;
    var b:Number = 11.2;
    var
    c:Number = a * b;
    edTot.text = numFormat.format(c);


      ----- Original Message ----- 
      From: Mário Júnior 
      To: flexdev@googlegroups.com 
      Sent: Friday, March 06, 2009 10:46 AM
      Subject: [flexdev] Re: Erro ao multiplicar variáveis


      sim.
      já foi usado num sistema de orçamento publico de uma grande prefeitura... 
já pensou se desse problema??? :D
      (na verdade, no começo houve uma falha de 1 centavo para cada operação, 
mas depois foi só acertar o precision dentro do próprio formatter)






      2009/3/6 Alberto <alberto.ferre...@tan.com.br>

        Olá,

        Tem certeza que o NumberFormatter vai resolver esse problema?



        ----- Original Message ----- 
          From: Mário Júnior 
          To: flexdev@googlegroups.com 
          Sent: Friday, March 06, 2009 9:22 AM
          Subject: [flexdev] Re: Erro ao multiplicar variáveis


          Fala Pedrão, blz?

          Então.. como a Gabriela mostrou, "problemas" de arredondamento de 
ponto flutuante é um tiro no pé em qualquer linguagem.
          No link q ela mostrou, tem um simples exemplo q sendo feito com 
qualquer linguagem terá resultados inesperados.

          Bem.. oq vc pode fazer é usar o .toPrecision mesmo q vc já disse ter 
funcionado, ou usar um <mx:NumberFormat> que irá exibir o número da forma 
corretamente.

          Lembrando que isso não é um problema da linguagem, mas da forma que 
números são representados binariamente, ou seja, esse "problema" existe desde 
1954 quando a IBM criou a primeira máquina capaz de fazer arredondamentos... a 
história segue aqui: http://en.wikipedia.org/wiki/Floating_point


          Um Abraço.







          2009/3/6 Gabriela Trindade Perry <gabrielape...@hotmail.com>


            
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_13989&sliceId=1

            Roundoff error is a fact of life in any computer program that uses
            floating-point arithmetic.

            Acho que precisamos de um pouco mais de cuidado antes de sair
            "queimando" o máquina.






          -- 

          Mário Júnior
          Programador Java / Adobe Flex
          http://blog.mariojunior.com






      -- 
      Mário Júnior
      Programador Java / Adobe Flex
      http://blog.mariojunior.com





  -- 
  Mário Júnior
  Programador Java / Adobe Flex
  http://blog.mariojunior.com

  

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

Responder a