Accueil > Forum > > > > Floating point
Floating point
lundi 7 août 2006 à 18:25:48 |
Floating point

ethan_decoster
|
Dans une base de donnée utilisée pour un de mes programmes, j'ai des données qui ont comme type de champs la valeur reel simple. La base de donnée communique avec le programme via Ado. Donc dans la base de donnée j'ai les valeurs 26.3. Mais a l'affichage dans le programme, la valeur de ce champs est de 26.299365489 ce qui en valeur arrondie me donne 26.3. Mais le hic ce que je me sert de cette donnée pour en afficher d'autre. Mais comme le programme intercepte la valeur de 26.3 comme 26.299... les autres donnée ne sont donc pas affichée. De plus c'est valeur doit etre de type numérique et non chaine de caractère parce que j'utilise le tri numérique pour ordonnancer ces données... Le pire c'est quand je fais un query sur ma table du style select * from clc where (cas = 26.3), le query me trouve l'enregistrement. Quelqu'un saurait me dire pourquoi la basse de donnée me donne la valeur de 26.3 alors que le programme affiche la valeur de 26.299... Merci Jerome
|
|
lundi 7 août 2006 à 18:52:16 |
Re : Floating point

ethan_decoster
|
Ah oui une chose importante peut etre, la valeur de 26.3 dals la base de donnée est recupérée avec le composant DBEdit. C'est peut etre ca le probleme... Je check et vous tiens au courant...
Si quelqu'un, trouve avant moi, merci de poster vos commentaires...
Jerome
|
|
lundi 7 août 2006 à 18:57:08 |
Re : Floating point

Loda
|
Réponse acceptée !
Salut,
Cela vient de la manière dont est stocké la valeur en mémoire (du PC).
Pour faire dans le simplifié, Les nombres flotant sont stocké sous la forme "scientifique" cad 'base' x 10~'Puissance' (+signe)
La base est stocké avec un nombre finit de bit (disons 15 pour l'exemple).
Donc quand tu écrit 26.3, il vas arrondire la base (263) au nombre le plus pres d'une puissance de 2 (1 à 2^15-1).
Après quand tu "relit" la valeur, il te retourne toute la précision qu'il a (26299...). Même celle que tu ne lui a pas donné.
C'est pour ça qu'il ne FAUT JAMAIS FAIRE DE TEST D'EGALITE AVEC DES FLOTANT !!!!
C'est aussi pour ça que tu peut additionner 1e-10 à une var floatant qui vaut 10e40 pendant toute une journée sans que la var ne change de valeur.
fait un test genre :
(cas < Limit + Epsilon) and (cas > limit - Epsilon)
avec un Epsilon qui vaut genre 0.002. (enfin, ça dépend de bcp de choses)
Chaque fois que possible, évite les type flotant, remplace les par des integer avec une ponderation (facteur).
"De plus c'est valeur doit etre de type numérique et non chaine de caractère parce que j'utilise le tri numérique pour ordonnancer ces données..."
je connais pas les détail de ton cas, mais il y a surement un moyen de le lire directement en floatant.
bon code,
|
|
lundi 7 août 2006 à 19:03:23 |
Re : Floating point

ethan_decoster
|
Y pas une solution pour lire le nombre comme il est tape dans la base de donnée??
|
|
lundi 7 août 2006 à 19:05:39 |
Re : Floating point

Loda
|
oui, il faut utiliser un champ string pas floatant.
ou si t'as toujours la même précision lors de la saisie, fait une routine de formatage.
|
|
mardi 8 août 2006 à 00:48:12 |
Re : Floating point

ethan_decoster
|
Avec une chaine string, tu sais faire un tri numerique sur les donnees??
|
|
mardi 8 août 2006 à 05:22:53 |
Re : Floating point

f0xi
|
Réponse acceptée !
utilise la virgule fixe. 26.3 = 2630/100 << depend de l'interval Min..Max des chiffres et de la precision voulue 1..n decimales stockage en entiers : round(Float*100) si je joue dans l'interval : 0..1000 avec precision maxi de 3 decimale, je multiplie par 1000 Fin := round(F*1000); Fout := Fin/1000; le tri de chaine en valeur flottante risque de faire n'importe quoi ... en tout cas on index pas des valeurs avec des flottant justement a cause de ça. champs ID : int / unique / auto increment / non null champs Valeur : float / null Croc (click me)
|
|
mardi 8 août 2006 à 11:51:04 |
Re : Floating point

Loda
|
au pire des pire, fait un champs en flotant que tu utilise pour le tri et un en string pour avoir ta "saisie". (très moche)
Mais j'éviterais si j'étais toi, y a surement un moyen de résoudre ton problème en changeant deux-trois trucs dans ton system.
De toute façon, tu peux marquer 'dommage' pour faire un test d'égalité (unique) avec un flotant.
|
|
mardi 8 août 2006 à 17:45:25 |
Re : Floating point

ethan_decoster
|
oui c'est vrai que c'est moche comme solution. J'ai fait changer le fusil d'epaule de loa sncb qui a abandonner le projet de mettre un cas intermedaire. Ex: 26 26BIS et 27 (si je les mettais en chaine de caractere) j'aurais pas eu cet ordre la. Maintenant la solution etait de garder le champs numerique mais de mettre 26 26,1 et 27 dans la base de donnée. Mais le projet a ete abandonné. Merci pour ton explication Loda j'avais pas capté cela comme ca mais c'est vrai que les float c'est de la M....
Jerome
|
|
mardi 8 août 2006 à 18:25:35 |
Re : Floating point

Loda
|
de rien.
si j'ai bien compris, tu utilise la partie fractionnaire de ton float pour distinguer des cas?!
pourquoi tu n'utilise pas un champs supplémentaire ? cela te permeterait de faire ton trie facilement.
(les float c'est fait pour manipuler des valeurs floattant. faut pas s'en servire pour autre choses.)
bon code,
|
|
Cette discussion est classée dans : base, programme, donnée, valeur, floating
Répondre à ce message
Sujets en rapport avec ce message
Les fonctions pratiques des bases de donnée [ par xpmich ]
bonjour, j'utilise une base de donnée Paradox sous delphy 7 !Je voudrais savoir : - comment réorganiser, tirer une base de donnée Paradox ? - Com
Comment tester si une base de donnée existe [ par gabs77 ]
bonjour, je voudrais faire que lorsque j exécute le programme, celui ci teste ci la base de donnée existe et que si elle n existe pas le programme ne
base de donnée [ par houcine_jam ]
zouzousalut comment lier un programme delphi avec un programme sql?
Base de donnée autonome sans serveur réseau...? [ par djynn62 ]
Bonjour,Je souhaite créer un programme de gestion de carnets (dont les feuillets ont chacun un numéro différend, le tout réparti sur plusieurs personn
comment ajout une image a une base de donnée [ par hengued ]
salut tous le monde ,je cherche comment ajouté un enssembles des images a une base de donnée ,et comment l'enrestire cet image dans ma application;voi
Chemin base des données sur le serveur non trouvé [ par notrica ]
Salut,J'ai installer mon logiciel sur le serveur win 2003, la base des données se trouve dans un repertoire different de là où se trouve le programme.
Base de donnée centraliser [ par MohInfo ]
Bonjour/Bonsoir a tousAprès votre permission ..., je veux juste savoir comment mettre en ouvre une base de donnée centraliser;ce que j'ai connais (je
Base de donnée ADOQuery MsAccess [ par lord948 ]
Bonjour a tous,j'aimerai avoir plus d'info sur l'evenement OnFetchProgressMerci.
création d'une listview [ par hainlesgens ]
bonjours à tous, je vous expose mon problème...je cherche a creer une listview qui va aller chercher dans ma base de donnée les valeurs nomjoueur et p
requete checkbox [ par ericdu62x ]
bonsoir, j'aurais besoin de faire une requête de donnée dans une Base de donnée:dans ma base de donnée j'ai un champ (vrai/faux) qui correspond a une
Livres en rapport
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|