dfloat / float -- Problème avec NGD - C++ - Programmation
Marsh Posté le 30-10-2008 à 22:42:14
Citation : je travaille sur des nombres qui peuvent etre assez grand (10 000 environ) et que j'ai besoin d'une précision assez grande (10^-3) environ |
C'est tout petit ça.
Le range d'un float c'est -3.4*10^-38 à 3.4*10^38, celui d'un double c'est -1.7*10^-308 à 1.7*10^308.
T'as de quoi faire.
Pour ta question sur dfloat, sinon, c'est surement une surcharge propre à la bibliothèque (note : la traduction française de library c'est bibliothèque, et la traduction anglaise de librairie c'est bookshop). Donc jette un oeil sur la documentation de ta NGD, pour ma part je ne la connais pas.
Marsh Posté le 30-10-2008 à 23:27:36
oui je sais que c'est "tout petit" mais l'étendu est sur 10^8 et c'est ca me semble-t-il que le float ne peux pas gérer ... enfin corrigez moi si je me trompe ...
Marsh Posté le 31-10-2008 à 00:02:58
ok merci
parce qu'en fait le problème est le suivant : j'ai des cubes qui tombent du ciel sur un sol plat (les cubes étant originellement horizontaux)
ils détectent la collision avec le sol, et après s'être immobiliés, lorsque je regarde le projeté des sommets du cube sur le sol plan et horizontal, je trouve par exemple ceci : (position du sommet en x et en z (les doublons sont supprimés))
-0.936267 - -6.86918
-0.936744 - -7.02718
-0.93712 - -6.87186
-0.937597 - -7.02986
-1.52026 - -6.86741
-1.52074 - -7.02541
et on voit qu'il y a 6 valeurs distinctes, alors que, le sol étant plat, on devrait en obtenir seulement 4.
on voit cependant que il y a des couples de valeurs relativement proches (à 10^-3 près) et c'est pour cela que je me demandais si je n'avais des problèmes avec les arrondis
Mais puisque les float supportent ceci, il n'y pas de raison
Connaîtriez vous la cause de mon problème ??
Merci d'avance
Marsh Posté le 31-10-2008 à 08:09:38
Fais une recherche sur l'imprécision des nombres flottants due à leur représentation en base 2.
Si t'as du courage, tu peux lire ce document : What Every Computer Scientist Should Know About Floating-Point Arithmetic
Marsh Posté le 31-10-2008 à 08:51:16
Pourquoi tu te poses ce genre de problème maintenant ? t'as des soucis ?
double c'est le type naturel pour faire du calcul flottant.
Marsh Posté le 31-10-2008 à 09:40:59
ben j'en avais lu une parti du document ...
et oui j'ai un soucis (cf mon dernier post ) et j'aimerai savoir si vous auriez pu m'aider
Marsh Posté le 31-10-2008 à 10:52:13
Bah c'est ton algo, pas les flottants. Tu prends n'importe quel FAQ de C, ça te dit de comparer deux flottants à epsilon près.
Marsh Posté le 31-10-2008 à 16:49:57
la comparaison, je la fais...
et mon algo, ben c'est pas le mien, la j'ai donné directement les valeurs que me retourne NGD
Marsh Posté le 30-10-2008 à 22:03:25
Bonjour
Pour un programme, j'utilise la librairie Newton Game Dynamics qui utilise des dfloat pour ses arguments
J'aurai voulu tout d'abord savoir quels étaient les spécificités de ce format parce que je n'arrive pas à le trouver sur le net
Ensuite, dans mon programme, je préfère utiliser les double, car je travaille sur des nombres qui peuvent etre assez grand (10 000 environ) et que j'ai besoin d'une précision assez grande (10^-3) environ
or NGD n'acceptant pas les doubles, comment puis je faire ?? (il accepte cependant les float car il sait faire la conversion float -> dfloat)
Merci d'avance
NC
Message édité par nisalon_caje le 31-10-2008 à 00:03:43
---------------
http://nisalon.labrute.com/