Actionscript can't round numbers properly
Hi, I'm making an application in actionscript that deals a lot with numbers. One of the problems, which has been driving me nuts for a while now, is "almost integers". Essentially, if I do something like the square root of 3, then square it, it gives me 2.99999999999999 (this is just the easiest example to test with). I've tried forcing it to round to a certain decimal place (http://kb2.adobe.com/cps/155/tn_15542.html), using toFixed, toPrecision, and math.round. I've been spending all afternoon on this, and have found that actionscript uses 15 point/precision floating numbers. So with the squareroot/square of 3 above, if I specify it to go to 14 decimal places/significant figures, it gives me 3.0000000000001 (essentially ending with a 1), and if I specify it to 15 digits, it gives me (2.9999999999999).
I'm pretty sure that Actionscript is trolling me, because if the number was 2.9999999999999 (15 digits) and I rounded it to 15 digits... it'd make sense to keep it the same because there is no number after the last 9. However, if I round it to 14 digits, shouldn't the 14th 9 (15th digit) be chopped off, and the 13th 9 (now the last digit) rounded up, and making it carry over until it just becomes 3? Where did the 1 come from when rounding to 14 digits? If there was a 9 before that, shouldn't it have made it round to 3 when rounding to 15 digits?
Not sure if I'm making sense, but hopefuly I am, although this is driving me up the wall. Thanks in advance!