Ruby - Multiplication issue

floating-point-precision, multiplication, ruby, ruby-on-rails-3.1

Solution

If you really want to round down to an integer then just

(3 * 2.32).to_i

but I think that's unlikely. Usually you just want to format the slightly imprecise floating point number to something like this

"%0.2f" % (3 * 2.32) 
=> "6.96"

If you really want to work with the exact representation then you can use BigDecimal.

require 'BigDecimal'
(3 * BigDecimal.new("2.32")).to_s("F")
=> "6.96"

PS. Recommended read http://floating-point-gui.de/ DS.

Problem

My output is like this - ``` ruby-1.9.2-p290 :011 > 2.32 * 3 => 6.959999999999999 ``` And I remember sometime back on another machine I had got it like.. `2.32 * 3 = 6` What is my mistake? Thanks a ton for reading this. :)

Original source