| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Какой тип использовать в джава программе |
| Автор: Иван Человеков 28.2.2007, 09:50 | ||
| Использую СУБД PostgreSQL. Ребята подскажите пожалуйста какой тип выбрать в программе для подсчёта и хранения денег, а также в СУБД? Double и float пенозволяют вести, насколько я понял, точный подсчёт без округления. Я использую: в СУБД money, а в программе использую кусок кода:
ERROR: column "stavka_razrada" is of type money but expression is of type numeric 1. Какой тип использовать в джава программе и как обрабатывать суммы? 2. Какой тип использовать в СУБД PostgreSQL Спасибо |
| Автор: tux 28.2.2007, 10:08 | ||
Цитата отсюда - http://www.postgresql.org/docs/8.2/interactive/datatype-money.html:
Здесь соответствие java-типов и типов JDBC - http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/getstart/mapping.html#1033804. |
| Автор: y3u 28.2.2007, 17:09 |
| вообще, касательно хранения денег, есть сложившиеся традиции, можно, к примеру, у того же Блоха почитать. Однозначно, надо хранить целым, каким-нибуь LONG желательно, а точность значения выбирать исходя из принятых на валютных биржах стандартов - отсюда и надо плясать, на 100 множить и потом делить, на 1000 или на 10000 |
| Автор: Иван Человеков 28.2.2007, 22:27 |
| Где бы почитать про традиции и книгу Блоха? |
| Автор: COVD 28.2.2007, 23:20 |
| посмотрите у Фаулера http://www.martinfowler.com/ap2/quantity.html - паттерн Quantity и его частный случай Money с примером на java. |
| Автор: Иван Человеков 1.3.2007, 23:00 | ||
| Тип поля поменял на Numeric[30,2] Вот мой код:
При выполнении возвращает код ошибки: ERROR: column "stavka_razrada" is of type numeric[] but expression is of type numeric Строка запроса: INSERT INTO firms (name_firm,stavka_razrada,fio_director,fio_gl_buh)VALUES(q,1.2,w,e) В чём может быть ошибка? Спасибо. |
| Автор: Иван Человеков 2.3.2007, 07:58 |
| Как я понял, оказывается что тип numeric[] и numeric в PostgreSQL - воспринимаются как разные типы Как только сменит на тип без скобок, ошибку выдавать перестало, но появилась другая проблема - после запятой в СУБД можно записать более 2 символов. Как решить эту проблему? Можно ли как-то типу BigDecimal задать фиксированную точность после запятой? Спасибо. |
| Автор: Иван Человеков 4.3.2007, 07:21 |
| Спасибо разобрался |