Page 2 sur 2

Publié : ven. 10/sept./2004 16:51
par cookie
Chris a écrit
Pure arrondit systématiquement à 6 décimales
Faux: Pure arrondit à l'affichage mais pas en calcul interne

fait:

Code : Tout sélectionner

PI.f = ATan(1) * 4 *100: Debug PI
et tu trouveras

Code : Tout sélectionner

314.159271
preuve qu'en interne , il calcule avec beaucoup plus de chiffres après la virgule (et heureusement :D )

Publié : ven. 10/sept./2004 17:04
par Chris
Alors fait ça:

Code : Tout sélectionner

PI.f = ATan(1) * 4 *100: Debug PI
Debug PI*5
Debug ""
PI2.f = ATan(1) * 4: Debug PI2
Debug PI2*500
Le résultat final est exactement le même, ce qui prouve bien que le gain de précision est négligeable. :roll:

Publié : ven. 10/sept./2004 17:34
par erix14
Pour charger le nombre PI dans une variable le plus rapidement possible. Moi j'utiliserai ceci :

Code : Tout sélectionner

pi.f
 
! fldpi
! MOV ebx,v_pi 
! fstp dword [ebx]

Debug StrF(pi,20)

Publié : sam. 11/sept./2004 8:26
par cookie
Le résultat final est exactement le même, ce qui prouve bien que le gain de précision est négligeable
Chris, je pense que tu fais une petite erreur de raisonnement:
en effet écrire

Code : Tout sélectionner

200 * 5
est effectivement la même chose (exactement) que

Code : Tout sélectionner

2 * 500
par contre essaye ça:

Code : Tout sélectionner

PI.f = ATan(1) * 4 *100: Debug PI 
Debug PI*5 
Debug "" 
PI2.f = ATan(1) * 4: Debug PI2 
Debug PI2*500
Debug ""

#pi=3.141593
Debug #pi
Debug #pi*500
et tu constatera que PB calcule avec plus que 6 chiffres après la virgule :D

Publié : sam. 11/sept./2004 14:52
par Le Soldat Inconnu
avec ta méthode :
1570.796387

avec la constante
1570.796387 (oups :roll: )

au fait, il faut mettre #Pi.f = 3.14159265

Une constante en resident est aussi précise que ta méthode 8)

et avec la valeur réelle
1570.7963267948965

la, on voit bien la limite de précision en calcul flottant du au 32bit (vivement le 64)

Publié : sam. 11/sept./2004 17:45
par cookie
@ Soldat Inconnu: je suis d'accord avec toi, à l'origine je réagissais au post de Guimauve et après ça a 'dégénéré' (gentiment :) ), ta constante fonctionne parce qu'effectivement PB calcule sur 8 chiffres après la virgule (et pas 6, je maintiens). Quand je pense que ma calculatrice Auchan à 3€ tient compte de 11 chiffres après la virgule... :wink:

Publié : sam. 11/sept./2004 22:35
par hardy
Je l'ai déjà dit, mais le répète : faudrait rapidement songer à ce que PB manipule des grands nombres.
Actuellement, il est impossible de l'utiliser pour des calculs scientifiques décents. Avec les propagations d'erreurs dues aux arrondis, 6 ou 8 chiffres, c'est ridicule dès qu'on fait un nombre conséquent d'opérations successives sur des floats.

Publié : dim. 12/sept./2004 11:32
par kelly
hardy a écrit :Actuellement, il est impossible de l'utiliser pour des calculs scientifiques décents
TOP MDR :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Publié : dim. 12/sept./2004 12:35
par Le Soldat Inconnu
sauf si on utilise la Lib F64