What you're doing is called integer division, which discards any remainder, as it wouldn't be expressible in integers, e.g.:
1 / 3 # == 0
As other respondents have mentioned, you can force a floating point division. You need to force the first argument to be a float (1 here) by calling .to_f. The second argument will automatically be coerced into a float, i.e.:
1.to_f / 3 # ~ 0.3333...
Note that once you move to floating point numbers, the result, generally speaking, is no longer exact. This is why I put ~ 0.333.
The precise details are more involved. In binary floating point arithmetic, which is common in today's microprocessors, powers of 2 are still exact, I believe. But the integer 3, for example, is not longer represented exactly, but only within the precision of the floating point representation (typically 1E-16 or thereabouts for "double" precision).
Long story short, here is a rule of thumb: If you're dealing with money values, where precision matters (ever been noticed a 1 cent discrepancy on a phone bill?) don't store computed results, and don't store values in floating points. Instead use integer or decimal data types (which internally store strings). Compute floating point results only for display and on demand, if possible. Avoid adding large and small values together once they're floats, and avoid chained computations in floats. Rework your algebra to avoid divisions until the end. Ruby also supports a Rational data type which represents fractions exactly and may be useful.
These issues fall under the science of "floating point error propagation" which is where you can look up more information if you need.