Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Débuter
Débuter Forum d'entraide pour débuter avec Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2005, 15h39   #1
Invité régulier
 
Inscription : août 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 61
Points : 9
Points : 9
Par défaut Notation scientifique

Bonjour

Firebird accepte-il les notations scientifique du type 1.5x10-3 ou 1.5e-3 ?
comment les stocker ? comment caster ces valeurs si elles sont stockées en varchar ?

merci

Benoît
Equus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2005, 09h38   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Si vous voulez les restituées tel qu'elles ont été entrées (et non la valeur dans un double précision) il vous faudra les mettre en effet dans un varchar.

Par contre vous ne pouvez pas les castez en double précision car ce n'est pas du numérique, c'est une notation mathématique. Il faut l'interpréter et donc faire un calcule pour en optenir une valeur, ce qui est bien plus compliqué qu'un simple passage d'un type à un autre.

Donc il vous faut un interpréteur. Je sais que dans l'UDF rfunc il y a un interpreteur d'expression mais je ne sais pas s'il peut interpréter les notations scientifiques. A vous de tester. Sinon l'autre solution c'est de créer une colonne supplémentaire de type double et lorsque que vous mettez à jour/insérez une nouvelle valeur vous enregistrez dans le varchar la notation scientifique et dans le double la valeur (que vous aurez fait calculé par votre langage de programmation). Enfin dernière solution (la plus difficile) créez votre propre UDF qui interprettera le varchar pour en donnez la valeur de type double précision.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2005, 11h21   #3
Invité régulier
 
Inscription : août 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 61
Points : 9
Points : 9
J'ai pourtant fait les essais suivants :

datachar => dataDblePrec = cast(datachar as Double precision)
1 => 1.000
1.5 => 1.500
1 000 000 000 => 1 000 000 000.000
1e150 => 1E150
-2E200 => -2E200

Les calculs du type sum, avg ... sont réalisables sur l'attribut dataDblePrec .

Bien sur, dès que du texte est rentré dans l'attribut datacahe, la conversion n'est plus possible. Mais il semble que ces valeurs peuvent être castées en double precision.... (je travaille sous Firebird 1.5).

Je pourrai donc faire des calculs sur le champ datachar après l'avoir casté bien sûr.

A moins que cela ne cache quelque chose .... qu'en pensez vous ?
Equus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2005, 13h29   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Oui mais je répète ce que j'ai dit : Si vous souhaitez restituer (donc à l'affichage) ce qui a été saisie, le double précision n'est pas adapté il vous faudra garder votre varchar.

Sinon 1E9 enregistré dans un double précision sera affiché 1 000 000 000.

Ensuite vous avez donné en exemple 1.5x10-3 qui ne poura pas être casté. D'où mon explication sur l'interpreteur d'expressions.

Donc si vous gardez votre varchar, avant d'enregistrez dans la base assurez vous que vous pourrez le caster en double précision (et pourquoi pas dans ce cas l'enregistrer dans une colonne séparée (comme ca vous faites le cast qu une seule fois et celà vous permet de vérifier que ca se passe bien). La colonne varchar ne vous servant qu'à des fins de présentations.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2005, 14h16   #5
Invité régulier
 
Inscription : août 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 61
Points : 9
Points : 9
Ok. Je comprends mieux...
Je n'ai jamais utilisé d'UDF. Je vais essayer de voir comment cela fonctionne.

Merci du coup de main

Benoît
Equus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h16.


 
 
 
 
Partenaires

Hébergement Web