![]() |
|
|
![]()
|
|
| Juju |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 26.10.2006 Репутация: нет Всего: 1 |
У меня постоянные сложности с Currency и Float полями в БД. В данном случае проблема следующая:
История: Основная валюта в программе доллар США. Т.е. Она заносится в поле PRICE_USD и от него строятся калькуляционные поля т.е. "Стоимость $" , "Цена (руб.)", "Стоимость (руб)". Проблема: В поле PRICE_USD я заношу, например, 2.72. В базу Access попадает 2.72 (т.е. все Ok). При калькулировании остальных же полей происходит следующее: когда по формуле PRICE_USD*KURS_USD вычисляется "Цена (руб.)" - значение поля PRICE_USD уже не 2.72 (которое заносилось и сохранялось в базе), а 2.7199998342. Пробовал решить проблему: Функцией RoundTo(PRICE_USD,-2), но в конечном итоге значения получаются с непозволительной погрешностью... Кто работал с Float (Currency) полями и обходил (сталкивался) с такими проблемами? Посоветуйте... и конечно сложно на данном этапе менять структуру базы. Это сообщение отредактировал(а) Juju - 27.10.2006, 17:38 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
как такое может быть? ты ведь пишешь
Поставь вопрос правильно. Добавлено @ 17:05 где это вычисляется? Стоимость $ - это калькулируемое поле? Я не знаю, если чесно, есть ли в Access тип "с фиксированной точкой", а НЕ Float. Попробуй его использовать. |
|||
|
||||
| Juju |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 26.10.2006 Репутация: нет Всего: 1 |
Уточняю проблему.
Обозначения: PRICE_USD(Цена в $) - физически в базе размер поля "Одинарное с плавающей точкой" формат поля "Основной" (т.е. 3454,34) кол-во знаков после запятой 2 PRICE_RUB(Цена в руб.) - калькуляционное Float COST_RUB(Стоимость в руб.) - калькуляционное Float (ну до него мы не дойдем т.к. проблема будет еще в начале) KursUSD - переменная, которая содержит курс доллара США. Действия: Опускаю написания названия таблицы. Пишу только название полей чтобы не захламлять суть. В поле PRICE_USD заношу значение 7,33 Открываю Access, проверяю значение, все в порядке - 7,33 Калькулирую поля: PRICE_RUB := PRICE_USD * KursUSD; И уже на этом этапе PRICE_USD принимает значение: 7,32999992370605, т.е. дальше и идти не надо. Это сообщение отредактировал(а) Juju - 27.10.2006, 17:47 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
| Juju |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 26.10.2006 Репутация: нет Всего: 1 |
Спасибо уже сделал...
Это сообщение отредактировал(а) Juju - 30.10.2006, 10:05 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |