Я использую тип BigDecimal в проекте Java. Я пытаюсь сохранить его, используя функцию с числовым полем. Java и postgres имеют разное значение. Например. Значение 56,97 из Java сохраняется как 56,9699999999999989 в postgres. Как я могу предотвратить это?
Разница между Java и postgres значением BigDecimal/numeric
Ответы (1)
Если вы перейдете к документам postgresql: https://www.postgresql.org/docs/current/datatype-numeric.html
Я предполагаю, что вы используете реальную или двойную точность, которые описываются как «переменная точность, неточная».
Если вы хотите, чтобы это было точно, скажем, мы говорим о деньгах или чем-то подобном, тогда вы должны использовать типы numeric
или decimal
:
NUMERIC(precision, scale)
Точность — это общее количество цифр, а масштаб — это количество цифр в дробной части.
Например, число 1234,567 имеет точность семь и масштаб три.
person
peprumo
schedule
24.02.2020
BigDecimal
в Java не является реальной или двойной точностью.
- person Laurenz Albe; 24.02.2020
Я имею в виду, что в PostgreSQL вещественная или двойная точность являются числовыми типами в почтовых индексах. Но если вам нужны точные данные, вы должны использовать числовые или десятичные числа.
- person peprumo; 24.02.2020
А, теперь я понял. ОП не имел в виду
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