Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / вычисление формулы / 5 сообщений из 5, страница 1 из 1
04.06.2003, 14:03
    #32176274
1024byte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление формулы
поставил Firebird 1.5 и увидел вот такой смешной глюк (или я торможу)
например:
table A c одним полем amount numeric(15,2)

пишем

insert into A (amount) values ( 530*(15/19)*0.25 );
заноситься 0

предположим глюки округления

пишем

insert into A (amount) values ( 530*(15.0/19.0)*0.25 );
заноситься 103.35

пишем

insert into A (amount) values ( 530*((15 * 1.0)/19.0)*0.25 );
заноситься 92.75

а теперь правильный ответ
104.605 !!!!!!!

чё делать не понятно
ПОМОГИТЕ
...
Рейтинг: 0 / 0
04.06.2003, 14:44
    #32176346
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление формулы
Числа типа 15.0 конвертятся к float -> нужно явное преобразование типов:
Код: plaintext
1.
2.
3.
4.
5.
SELECT
  CAST( 530  AS DOUBLE PRECISION)*(
  CAST( 15  AS DOUBLE PRECISION)/
  CAST( 19  AS DOUBLE PRECISION))*
  CAST( 0 . 25  AS DOUBLE PRECISION)
FROM RDB$DATABASE

А вобще-то с округлениями в ИБ чё-то нехорошее и вправду ...
...
Рейтинг: 0 / 0
04.06.2003, 15:21
    #32176411
1024byte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление формулы
Дело в том что мне не select делать надо а insert. Необходимо внести в таблицу значение которое нельзя расчитать з
аранее - запрос составляеться программно на основе введенной пользователем формулы. Причем точность нужна именно 2 знака после запятой.
...
Рейтинг: 0 / 0
04.06.2003, 16:00
    #32176485
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление формулы
Ну это же селект для примера. Так же и вставку надо делать.
...
Рейтинг: 0 / 0
04.06.2003, 19:43
    #32176787
1024byte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление формулы
Проблема в том, что от пользователя я всё получаю именно в виде строки содержащей выражение, причем какое именно я заранее не знаю
потом я "приклеиваю" к нему insert into... вначале и выполняю запрос

ну вот такая задача :(
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / вычисление формулы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]