Como vai pessoal, depois de muita dor de cabeça fazendo contas com números 
quebrados, tanto o Flex quando o JAVA dão um trabalhão com estes resultados:

Código de Exemplo:

private function calcular():void {
    var x:Number = 4502.73;          // 4502.73
    var y:Number = x * 100;           // 450273.00
    var z:int = int(x * 100);             // 450273
    
    trace("x: " + x);                     // x: 4502.73
    trace("y: " + y);                     // y: 450272.99999999994
    trace("z: " + z);                     // z: 450272    faltou 1 centavo
}


Perceberam que faltou um 1 centavo na última conta? E que na segunda conta uma 
mera multiplicação se tornou um número cabuloso?

Já vimos este problema antes e culparam o próprio hardware, solução ainda não 
inventaram, logo não seria um "BUG" do Flex. 

Pois é, fazer contas que envolvam números com itens primos é uma bruta dor de 
cabeça. Pra toda conta você precisa arredondar, multiplicar por 100, passar pra 
inteiro, somar, dividir por 100 novamente. Um exemplo seria:

private function calcular():void {
    var x:Number = 4502.73;          // 4502.73
    var y:Number = Math.round(x * 100);           // 450273.00
    var z:int = int(Math.round(x * 100));             // 450273
    
    trace("x: " + x);                     // x: 4502.73
    trace("y: " + y);                     // y: 450273
    trace("z: " + z);                     // z: 450273  
}

Alguém aqui na lista já implementou o tão esperado BigDecimal pra nós?

Se implementaram manda o código. Ah, cuidado com os seus programas de 
eCommerce, seu cliente vai ficar muito puto em saber que faltou o troco.

Abraço,
-Daniel
--~--~---------~--~----~------------~-------~--~----~
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