ฉันใช้ประเภท BigDecimal ในโครงการ Java ฉันกำลังพยายามบันทึกโดยใช้ฟังก์ชันที่มีช่องตัวเลข Java และ postgres มีค่าต่างกัน เช่น. ค่า 56.97 จาก Java บันทึกเป็น 56.9699999999999989 ใน postgres ฉันจะป้องกันได้อย่างไร?
ความแตกต่างระหว่างค่า Java และ postgres ของ BigDecimal/ตัวเลข
คำตอบ (1)
หากคุณไปที่เอกสาร postgresql: https://www.postgresql.org/docs/current/datatype-numeric.html
ฉันเดาว่าคุณกำลังใช้ความแม่นยำจริงหรือสองเท่าซึ่งอธิบายว่า "ความแม่นยำของตัวแปรไม่แน่นอน"
หากคุณต้องการให้ตรงทั้งหมด สมมติว่าเรากำลังพูดถึงเงินหรือสิ่งที่คล้ายกัน คุณควรใช้ประเภท numeric
หรือ decimal
:
NUMERIC(precision, scale)
ความเที่ยงตรงคือจำนวนหลักทั้งหมด ส่วนสเกลคือจำนวนหลักในส่วนของเศษส่วน
ตัวอย่างเช่น หมายเลข 1234.567 มีความแม่นยำเป็น 7 และมาตราส่วนเป็น 3
person
peprumo
schedule
24.02.2020
BigDecimal
ของ Java ไม่ใช่ ความแม่นยำจริงหรือสองเท่า
- person Laurenz Albe; 24.02.2020
ฉันพูดถึง PostgreSQL ความแม่นยำจริงหรือสองเท่าเป็นประเภทตัวเลขใน postges แต่ถ้าคุณต้องการข้อมูลที่แม่นยำ คุณควรใช้ตัวเลขหรือทศนิยม
- person peprumo; 24.02.2020
อ๋อ ฉันเข้าใจแล้ว OP ไม่ได้หมายถึง
numeric
เมื่อเขาพูดเป็นตัวเลข
- person Laurenz Albe; 25.02.2020
varchar
- person a_horse_with_no_name   schedule 24.02.2020varchar
นั้นเป็นตัวเลขในคำสั่ง SELECT ของคุณได้อย่างไร - person a_horse_with_no_name   schedule 24.02.2020