Scaling numbers is a "poor mans" BigDecimal. It will alleviate floating point issues but not fix them. Think of scaled math as a treatment, not a cure.
The BigDecimal library has proven to be the most useful to me. There is also "BigNumber", which you can find here:
http://jsfromhell.com/classes/bignumber. Both have bugs, but those bugs can be fixed. I've outlined them below.
BigDecimal is a straight port from the Java library of the same name. Despite its scary appearance it is much faster than BigNumber in some operations.
Performance results from my own tests show that addition,subtraction,multiplication and division all average around .03 milliseconds for a single call. BigNumber operations average around .05. The real difference shows in more complex calculations. A standard compound interest calculation using BigDecimal averages .39 milliseconds while the same calculation with BigNumber took several milliseconds, I believe this is due in large part to a more efficient implementation of pow() by BigDecimal.
In choosing to use these, there are two issues to be aware of:
BigNumber has a bug that prevents correct rounding.The name of the rounding constants used are incorrect in the round function, and the add function incorrectly returns a new object when in "rounding mode" (it should "add in place"). Both issues are easy to fix.
BigDecimal has a bug in the implementation of its pow() function. The author kindly provided a fix. As the Java version relied upon an integer overflow, you need to correct the following in BigDecimal.js:
2405 n=n+n; // shift left 1 bit
2406 if (n<0)
To
2405 n<<=1; // shift left 1 bit
2406 if (n<0)
In the end I chose BigDecimal and have been happy with the results, hopefully these two fixes will allow you to evaluate them for yourself!