Pi

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message 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 )
Cookie
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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:
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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)
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message 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
Cookie
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message 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:
Cookie
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message 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.
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message 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:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

sauf si on utilise la Lib F64
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre