Pada Ruby dalam beberapa kasus penggunaan tipe data float tidak mengalami masalah jika digunakan. Namun, jika digunakan untuk perhitungan mata uang, lebih cocok menggunakan menggunakan decimal. Alasannya sederhana, angka yang dihasilkan tipe data decimal lebih sesuai ekspektasi dibandingkan float.

Berikut adalah contoh angka yang dihasilkan oleh tipe data float saat melakukan penghitungan.

# Ruby 2.5.1
# irb

dollar1 = 1.03
dollar2 = 0.96
dollar1 - dollar2 # => 0.1100000000000001

Ruby memiliki BigDecimal yang dapat digunakan sebagai tipe data decimal.

# Ruby 2.5.1
# irb

require 'bigdecimal'

dollar1 = BigDecimal("1.07")
dollar2 = BigDecimal("0.96")
result = dollar1 - dollar2
puts result.to_s('F') # => 0.11

Jika malas membuat decimal dengan sintaks BigDecimal(number_in_string), dapat digunakan bigdecimal/util dimana menyediakan method to_d yang otomatis melakukan konversi ke tipe data decimal.

# Ruby 2.5.1
# irb

require 'bigdecimal'
require 'bigdecimal/util'

dollar1 = 1.07.to_d
dollar2 = 0.96.to_d
result = dollar1 - dollar2
puts result.to_s('F') # => 0.11

Sedangkan jika menggunakan Ruby on Rails, kita dapat lebih malas lagi, selain secara default sudah load bigdecimal dan bigdecimal/util, secara otomatis Rails juga melakukan konversi dengan to_s('F') saat dilakukan output.

# Ruby on Rails 5.1.6
# Rails console

dollar1 = 1.07
dollar2 = 0.96
result = dollar1 - dollar2
puts result.to_d # => 0.11