2010-04-20 6 views
2

J'ai une table avec une colonne de type décimal. Il existe une structure ESQL/C qui représente la table. Il a un membre de type décimal. J'ai aussi une structure C normale pour l'équivalent pour la même table. Le type du champ mentionné ci-dessus est un flotteur.Convertir float en décimal dans Informix

Puisque nous utilisons memcpy pour copier des données vers et depuis la structure ESQL/C vers la structure C, il y a un problème avec la conversion décimale en flottante. Lorsque j'ai cherché dans le manuel du programmeur Informix ESQL/C, je n'ai trouvé aucune fonction capable de le faire. La recherche Google m'a conduit à la fonction deccvflt(). Cette fonction convertit un flottant en un type décimal.

Bien que je n'ai pas pu trouver cette fonction dans le manuel, je vois les déclarations dans decimal.h. Ces fonctions sont-elles toujours recommandées pour être utilisées? Alternativement, je pensais aussi à utiliser le type décimal dans la structure C, car il s'agit d'une structure en C. De cette façon, je peux toujours utiliser le memcpy droit?

S'il vous plaît partagez votre opinion.

IBM Informix Dynamic Server Version 11.50.FC3

Merci, Prabhu

Répondre

1

Vous pouvez convertir flotter ou décimal directement dans votre requête en utilisant un casting

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

ou

select name_of_decimal::float from table 
+0

Merci pour la réponse. J'ai appris quelque chose de nouveau. Mais je suis plus enclin à le faire en dehors de la requête car je sélectionne généralement plusieurs colonnes tout le temps. Il serait bon de connaître une fonction qui peut le faire en dehors de la requête. – prabhu

+0

Ayant cela entre autres colonnes dans une requête fonctionne également. – stacker

+0

Hmm .. C'est vrai. Existe-t-il un moyen d'utiliser cette diffusion avec les variables hôtes C? – prabhu

Questions connexes