Saya menggunakan tipe BigDecimal dalam proyek Java. Saya mencoba menyimpannya menggunakan fungsi dengan bidang numerik. Java dan postgres memiliki nilai yang berbeda. Misalnya. Nilai 56,97 dari Java disimpan sebagai 56,9699999999999989 di postgres. Bagaimana cara mencegahnya?
Perbedaan antara nilai Java dan postgres BigDecimal/numerik
Jawaban (1)
Jika Anda membuka dokumen postgresql: https://www.postgresql.org/docs/current/datatype-numeric.html
Saya kira Anda menggunakan presisi nyata atau ganda yang digambarkan sebagai "presisi variabel, tidak eksak".
Jika ingin lebih tepatnya, misalkan kita berbicara tentang uang atau sejenisnya, sebaiknya gunakan tipe numeric
atau decimal
:
NUMERIC(precision, scale)
Presisi adalah jumlah digit seluruhnya, sedangkan skala adalah jumlah digit pada bagian pecahan.
Misalnya angka 1234.567 mempunyai ketelitian tujuh dan skala tiga.
person
peprumo
schedule
24.02.2020
BigDecimal
Java tidak nyata atau presisi ganda.
- person Laurenz Albe; 24.02.2020
Seperti yang saya sebutkan di PostgreSQL, presisi nyata atau ganda adalah tipe numerik di postges. Namun jika Anda membutuhkan data yang tepat, Anda sebaiknya menggunakan angka atau desimal.
- person peprumo; 24.02.2020
Ah, aku mengerti sekarang. OP tidak bermaksud
numeric
ketika dia mengatakan numerik.
- person Laurenz Albe; 25.02.2020
varchar
. - person a_horse_with_no_name   schedule 24.02.2020varchar
itu menjadi angka dalam pernyataan SELECT Anda? - person a_horse_with_no_name   schedule 24.02.2020