Message #2783
Sujet: Bizzareries avec des f64 (donc les doubles)
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Dernière modification | 31-07-2007 16:44:00 | Jerry Kan |
ton probleme fait a mon avis référence a des soucis de méthode numérique, comme tu le sais sans doute, en informatique on ne peut pas se permettre d'ecrire les formules mathématiques directement, parce que lorsqu'on joue avec des flottant, l'ordinateur est incapable de faire mieux que des approximations a mon avis avec de si gros chiffres, tu fait un truc du style J = J + Di avec Di tellement proche de zero que ca n'a pas de sens pour la machine essayons de simplifier la formule parce que si tu l'écrit, chaque grosse opération de calcul va aggrandir la marge d'erreur J = J + ( ( dayspeed / (86400.0*1000.0) )*dTime; cette formule est mauvaise parce que la premiere division va générer une grosse marge d'erreur, et cette erreur va etre multipliée par dTime, pour ensuite faire une nouvelle grosse division (avec dayspeed) qui va faire exploser la marge d'erreur J = J + dayspeed / ( dTime / 86400.0*1000.0 ) J= J + (dayspeed * dTime ) / ( 86400000 ) voila qui est deja plus propre et qui perdra moins en précision lors du calcul (j'espere que je me goure pas dans la formule, bon au moins c'est ca l'idée) maintenant, tu doit trouver comment pouvoir diviser par moins que 86400000, parce que ca commence a faire un tres gros chiffre, meme pour un pc, pour moi une soluce ce serai : J= J + ( (dayspeed * dTime ) / ( 864 ) ) * 10 ^ -5 la ton pc a deja plus de chance de s'en sortir mais note que c'est quand meme idiot de diviser par 10^ 5, tu va perdre enormement en précision, autant stocker ton truc dans deux variables J et H quand H atteint un certain seuil, tu incrémente J, voila j'espere que ca va t'aider et que je suis pas hors sujet tu peux donner un ordre de grandeur pour les valeurs de tes varibles dTimes et dayspeed ? si tu m'explique ce tu veux calculer, je veux bien m'y pencher dessus
ca sent le débordement non maitrisé non ?
ne fonctionne plus ? ou ne compile plus ? |
| Création du message | 31-07-2007 16:42:39 | Jerry Kan |
ton probleme fait a mon avis référence a des soucis de méthode numérique, comme tu le sais sans doute, en informatique on ne peut pas se permettre d'ecrire les formules mathématiques directement, parce que lorsqu'on joue avec des flottant, l'ordinateur est incapable de faire mieux que des approximations a mon avis avec de si gros chiffres, tu fait un truc du style J = J + Di avec Di tellement proche de zero que ca n'a pas de sens pour la machine essayons de simplifier la formule parce que si tu l'écrit, chaque grosse opération de calcul va aggrandir la marge d'erreur J = J + ( ( dayspeed / (86400.0*1000.0) )*dTime; cette formule est mauvaise parce que la premiere division va générer une grosse marge d'erreur, et cette erreur va etre multipliée par dTime, pour ensuite faire une nouvelle grosse division (avec dayspeed) qui va faire exploser la marge d'erreur J = J + dayspeed / ( dTime / 86400.0*1000.0 ) J= J + (dayspeed * dTime ) / ( 86400000 ) voila qui est deja plus propre et qui perdra moins en précision lors du calcul (j'espere que je me goure pas dans la formule, bon au moins c'est ca l'idée) maintenant, tu doit trouver comment pouvoir diviser par moins que 86400000, parce que ca commence a faire un tres gros chiffre, meme pour un pc, pour moi une soluce ce serai : J= J + ( (dayspeed * dTime ) / ( 864 ) ) * 10 ^ -5 la ton pc a deja plus de chance de s'en sortir mais note que c'est quand meme idiot de diviser par 10^ 5, tu va perdre enormement en précision, autant stocker ton truc dans deux variables J et H quand H atteint un certain seuil, tu incrémente J, voila j'espere que ca va t'aider et que je suis pas hors sujet tu peux donner un ordre de grandeur pour les valeurs de tes varibles dTimes et dayspeed ? si tu m'explique ce tu veux calculer, je veux bien m'y pencher dessus
ca sent le débordement non maitrisé non ?
ne fonctionne plus ? ou ne compile plus ? |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 121 invités en ligne membre en ligne: - RSS Feed |