well, u can use number.tofixed(2);
--- In flexcoders@yahoogroups.com, "b_alen" <[EMAIL PROTECTED]> wrote:
>
> Here is how I arrived at this:
>
> var res:Number;
>
> var a:Number = 5;
> var b:Number = 4.8;
>
> res = a - b;
> trace("result: " + res + ", a: " + a + ", b: " + b);
>
>
> The trace clearly shows that the value of a is 5, and the value of b
> is 4.8. However the end result is clearly shown as
0.2000000000000018.
>
> Ok, I wanted to create a workaround where I will make sure that b is
> really 4.8, and I used toPecision() method.
>
> var b1:String = b.toPrecision(2);
> var b2:Number = Number(b1);
> trace("b1: " + b1 + ", b2: " + b2);
>
> res = a - b2;
> trace("result: " + res + ", b1: " + b1 + ", b2: " + b2);
>
>
> Again with same result. b2 was traced as 4.8, but the end result
still
> showing 0.2000000000000018. As this can of course break all further
> calculations I had to make sure result is really holding a value
that
> it should, based on all mathematical logic. So I did this:
>
> var res1:String = res.toPrecision(2);
> res = Number(res1);
>
> trace("result: " + res);
>
> I got the expected result and the value of res is now 0.2.
>
> This is however very ugly, in case I'm not doing something wrong.
> Every time we expect a floating point value in our calculation we
have
> to handle it to ensure the proper value is calculated, because what
> Flash calculates is just wrong. Also, every intermediate calculation
> has to be stored in a variable converted to String with toPrecision
> and back to Number for future use. I really don't know how to
properly
> handle this and would appreciate any advice. Imagine the shopping
cart
> system with this sort of unpredictable behavior.
>
> For the end, here's one more weirdness:
>
> var c:Number = 488.8;
>
> trace("c: " + c + " , c.toPrec: " + c.toPrecision(2));
>
>
> Traces out c: 4.8, c.toPrec: 4.9e+2
>
>
>
>
> Thanks,
>
> Alen
>
>
>
>
>
>
>
>
>
>
> var c:Number = 488.8;
>