Decimals in Apex: setting scale without rounding
Well there are more methods available @ Decimal class. You can try specifying the ROUNDING MODE by doing something like this
system.debug('#Decimal:'+(0.4579060401674421859641886792928).setscale(2,RoundingMode.DOWN));
For example The Down Rounding mode always rounds towards zero, you can select other rounding modes from http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_decimal.htm#apex_decimal_rounding_mode