Преобразование числа с плавающей запятой в десятичное в Informix

У меня есть таблица со столбцом десятичного типа. Таблица представляет собой структуру ESQL / C. Он имеет член типа decimal. У меня также есть нормальная структура C для эквивалента той же таблицы. Тип вышеупомянутого поля - float.

Поскольку мы используем memcpy для копирования данных в структуру ESQL / C и обратно в структуру C, возникает проблема с преобразованием десятичных чисел в числа с плавающей запятой. Когда я поискал руководство программиста Informix ESQL / C, я не нашел ни одной функции, которая могла бы это сделать. Поиск в Google привел меня к функции deccvflt (). Эта функция преобразует тип с плавающей точкой в ​​десятичный.

Хотя мне не удалось найти эту функцию в руководстве, я вижу объявления в decimal.h. Эти функции по-прежнему рекомендуется использовать?

В качестве альтернативы я также думал об использовании десятичного типа в структуре C, так как это структура C. Таким образом, я все еще могу использовать memcpy, верно?

Пожалуйста, поделитесь своими мыслями.

IBM Informix Dynamic Server версии 11.50.FC3

Спасибо, прабху


person prabhu    schedule 20.04.2010    source источник


Ответы (1)


Вы можете преобразовать в float или decimal прямо в своем запросе, используя приведение

select name_of_float::decimal(8,2) from table

or

select name_of_decimal::float from table
person stacker    schedule 20.04.2010
comment
Спасибо за ответ. Узнал что-то новое. Но я более склонен делать это вне запроса, потому что я обычно всегда выбираю несколько столбцов. Было бы хорошо узнать о функции, которая может делать это вне запроса. - person prabhu; 20.04.2010
comment
Хм .. Это правда. Есть ли способ использовать это приведение с переменными хоста C? - person prabhu; 20.04.2010
comment
Это скорее предназначено для того, чтобы informix мог выполнять приведение типов данных, чтобы типы данных напрямую соответствовали значениям хоста. - person stacker; 21.04.2010