IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Firebird Discussion :

Notation scientifique


Sujet :

Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Points : 35
    Points
    35
    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

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    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 ?

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    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

Discussions similaires

  1. Affichage en notation scientifique
    Par sacofan dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2006, 13h14
  2. Transformer un reel en notation scientifique
    Par delsinnj dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2006, 09h31
  3. [TP] Nombre en notation scientifique
    Par barth.pas dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 30/08/2006, 20h27
  4. Conversion en double et notation scientifique
    Par bert24 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/09/2005, 13h26
  5. Conversion fpu -> notation scientifique décimale
    Par Alucard_Math dans le forum Assembleur
    Réponses: 4
    Dernier message: 13/05/2004, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo