Kenapa Pada Ruby Lebih Baik Pakai Decimal Dibanding Float untuk Perhitungan Mata Uang
- Last modified atPada 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
- Tags:
- #ruby
- #rails
- #rubyonrails