Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
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 15/09/2003, 11h22   #1
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
Par défaut [IB701] problème de float ??

J'ai une table avec les champs suivants :
champs type de domaines
-------------------------------------
idtable integer
nom varchar25
portefeuille float

Lorsque je remplis ma table par :
0
toto
150,01

Je valide puis je fais un commit & refresh
ca me sort :
0
toto
150,01000457132124

D'où vient tous ces chiffres ??? est-ce normale ?
c pas trop dérangeant pour ma part car je n'utilise que 2 chiffres après la virgule... mais bon... j'aimerais savoir.
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2003, 12h46   #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
Ce problème vient de la façon d'encoder les chiffres de type float. Il est connu aussi sur plusieurs langages.

Float est à utiliser pour stocker des valeurs de type calculs scientifiques.

Pour la gestion c'est assez peu utilisé car en compta il serait innadmissible d'avoir un chiffre aproximatif (même si c'est à la 6 eme décimale).
Et donc pour la gestion et l'enregistrement de montants il est grandement préférable d'utiliser le type DECIMAL ou NUMERIC car ces deux types de données sont à décimale fixe (ou du moins max) et n'approximent pas la valeur pour stockage. Ces types sont très bien adaptée pour les calculs financiés également.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2003, 12h59   #3
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
J'utilise IbConsole pour créer mes tables et les "data types" Decimal et numeric n'existent pas... il y a integer, smallint, le float... et le double précision.
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2003, 13h27   #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
: : Même dans les vieille version je n'ai pas souvenir que ces type n'existe pas...

C'est quoi la version d'interbase que tu utilises ??

Code :
1
2
3
CREATE TABLE TEST_MONTANT (
    MONTANT  NUMERIC(10,2)
);
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2003, 14h11   #5
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
J'utilise la version 7.1 d'interbase.

Les data type qu'ibConsole me propose pour créer un domaine sont :
INTEGER
SMALLINT
FLOAT
CHAR
DOUBLE PRECISION
VARCHAR
BLOB
TIME
DATE
TIMESTAMP
BOOLEAN
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2003, 14h15   #6
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
Je viens de tester un create table avec numeric et ca marche bien !

Bizarre que dans la liste des datatypes, ce type n'existe pas...

Sinon, merci du conseil je vais dorénavant utiliser numeric au lieu de float !

BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web