You should consider if you want to work with Float, Integer, BigDecimal (which is some kind of LongFloat) or Rational. Using Float for something that needs to be rounded regularly to a fixed number of digits after the decimal point may or may not be the right way to go, because it has some behaviour in terms of rounding which has to be considered. There is a RubyForge-project long-decimal ( http://rubyforge.org/projects/long-decimal/ ) which will be specialized for doing calculations with a defined number of digits after the decimal point. Maybe this will be useful for the kind of calculations you are trying to do.