8 poin oleh GN⁺ 2024-10-09 | 1 komentar | Bagikan ke WhatsApp
  • Memanipulasi jumlah uang adalah tugas komputasi yang umum, tetapi bahasa pemrograman arus utama tidak memiliki tipe data bawaan untuk merepresentasikan jumlah uang
  • Hal ini dapat menyebabkan masalah pembulatan dalam tugas seperti pembayaran cicilan, transaksi valuta asing, pemrosesan biaya, dan pemungutan pajak
  • Money adalah pustaka Kotlin yang membantu mempermudah perhitungan dan alokasi jumlah uang
    • Mendukung operasi matematika pada jumlah uang, perhitungan persentase, dan alokasi sehingga dapat memodelkan berbagai kasus penggunaan
    • Juga mendukung cryptocurrency secara bawaan
  • Fitur alokasi
    • Salah satu keunggulan terbesar pustaka ini adalah fitur alokasinya
    • Membagi jumlah uang menjadi beberapa bagian sambil menjamin totalnya tetap sama dengan jumlah awal
    • Misalnya, ketika pelanggan membayar pembelian senilai USD 100.00 dalam tiga kali cicilan, kerugian akibat masalah pembulatan dapat dicegah
  • Cara alokasi
    • Gunakan metode allocate() untuk menjamin hasil tanpa selisih dari jumlah awal.
    • Untuk mengalokasikan berdasarkan rasio, kirim daftar nilai Percentage.
    • Secara default, pustaka akan mengalokasikan selisih secara otomatis, tetapi bisa disesuaikan dengan strategi alokasi yang diinginkan.
  • Penutup
    • Tulisan ini adalah pengenalan singkat terhadap fitur-fitur pustaka.
    • Ada rencana untuk menjaga API tetap ringkas serta secara bertahap memperluas dukungan pengembangan Android dan fitur persistensi serta serialisasi.
    • Versi saat ini diharapkan bermanfaat bagi orang-orang yang memanipulasi jumlah uang dalam proyek Kotlin.

Ringkasan GN⁺

  • Menangani jumlah uang adalah pekerjaan umum dalam pemrograman, tetapi dapat menjadi rumit karena masalah pembulatan.
  • Pustaka Money adalah pustaka Kotlin yang dirancang untuk menyelesaikan masalah ini, dengan dukungan alokasi dan perhitungan jumlah uang yang akurat.
  • Pustaka ini mendukung 306 mata uang dan 2283 cryptocurrency, sehingga berguna untuk menangani uang dalam proyek Kotlin.
  • Proyek lain dengan fungsi serupa antara lain pustaka Joda-Money untuk Java.

1 komentar

 
GN⁺ 2024-10-09
Pendapat Hacker News
  • penggunaan fungsi infix terasa agak aneh

    • saat mendesain API di Kotlin, rasanya lebih umum memakai fungsi ekstensi atau properti ekstensi biasa
    • penasaran kenapa plus dan minus tidak dioverload alih-alih memakai "increaseBy" dan "decreaseBy"
  • selamat untuk pustakanya dan terima kasih sudah membagikannya

    • sistem unit di F# atau C# mungkin mirip dengan perhitungan uang
    • sedang mengembangkan backtester di Rust yang berfokus pada akurasi, dan aset dinilai dalam mata uang
    • penasaran apakah saat simulasi boleh mengasumsikan bursa selalu beroperasi
    • penasaran apakah ada data publik untuk nilai tukar
    • penasaran nilai tukar mana yang sebaiknya dipilih saat bertransaksi
    • penasaran apakah ada cara terbaik untuk pembulatan
    • penasaran apakah pajak sebaiknya langsung dipotong
    • sedang mempertimbangkan apakah inflasi perlu dimodelkan; untuk saat ini berencana mengabaikannya lalu menyesuaikan di akhir
  • mengingatkan pada kegunaan tipe uang di Rebol

    • sistem tipe Rebol sangat ekspresif
    • berharap lebih banyak pustaka yang memberikan pengalaman seperti ini
  • pertanyaan tentang edge case yang muncul saat menangani uang

    • berharap akan terjadi pengecualian runtime saat menambahkan nilai dari mata uang yang berbeda
    • penasaran apakah aturan pembulatan bisa ditentukan saat membagi $2.00 dengan 3
    • penasaran bagaimana penanganan digit tambahan saat mem-parsing input pengguna
    • penasaran bagaimana pustaka menangani kasus yang melanggar aturan jumlah digit
  • menyukai dukungan untuk mata uang kustom

    • simbol mata uang bisa berbeda menurut wilayah, jadi perlu berhati-hati
    • dataset CLDR digunakan di sebagian besar implementasi yang menangani tampilan mata uang
  • aneh bahwa bahasa spreadsheet tidak mendukung uang dengan baik

    • otomatisasi dengan spreadsheet itu bagus, dan hasil yang mengejutkan bisa didapat dari bahasa yang benar-benar serius menangani tipe
  • tipe decimal di C# cocok untuk perhitungan uang

  • belajar banyak dari komentar-komentarnya, dan itu akan membantu iterasi berikutnya dari pustaka ini

  • lebih menginginkan test suite yang menyeluruh untuk menangani semua edge case daripada pustaka itu sendiri

    • ada pemikiran tentang penggunaan tipe yang ketat
    • terasa aneh bahwa banyak bahasa pemrograman tingkat rendah masih memakai uint64, size_t, dan sebagainya
  • tampaknya memenuhi semua persyaratan, dan ada pembahasan yang bagus tentang kesulitan utama dalam menangani uang