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
Recent Posts
C# - The Difference Between string[] and List
Learn the difference between string[] and List
in C# and when to use each for storing collections of strings in your code Shell Piping - Standard Input, Standard Output, Standard Error, /dev/null
Penjelasan singkat mengenai shell piping dan /dev/null
HTML Boilerplate
HTML Boilerplate versi KAK Labs
No-Class / Classless CSS Frameworks
Daftar CSS frameworks tanpa class versi KAK Labs
Microsoft C#
Review, rekomendasi link belajar dan rekomendasi extensions Visual Studio Code untuk C#