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
base de donnée [ par rzc ]
salut tout le monde svp est ce que vous pouvez me donné le code pour faire une sauvgarde dans une base de donnée en temps réel parce que avec le code
base de données sou delphi [ par cintar3000 ]
Bonjour, j'ai une base de donnée sous paradox7 quand j'insert un enregistrement et j'enregistre avec table1.post; l'enregistrement est '' enregistrer
image dans base de donnée [ par sharifcrd ]
sharif comment inserrer / stocker une image dans une base de donne dbase4 sous delphi7 merci
problème de lenteur dans l'accès à la base de donnée en case mise à jour [ par fodilone ]
J'ai réalisé une application qui permet d'enregistrer et de mettre à jour les données sous réseau. Pour cela, j'ai crée un module de données qui conti
Base de donnée pour débutant [ par mabedad ]
Bonjour, je suis élève en terminal S SI, et j'ai un ppe en fin d'année, nous voulons créer un logiciel de covoiturage sous delphi !!! Donc une personn
recherche d'une base de donnée [ par ayadi001 ]
Bonjour j'ai une application base de donnée, les tables en paradox, je veux afficher les données entre deux dates comment la requete s'écrit-il ? a
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|