View Single Post
Old 07-12-2010, 21:46   #1
MaxDembo81
Member
 
Iscritto dal: May 2010
Messaggi: 161
[C] Errore nel calcolo della radice quadrata?

Salve a tutti,
ho bisogno di calcolare in C la radice quadrata di un numero (2, 3 etc...) con la massima precisione possibile.
Ho scaricato DevC++ e usando questo programmino sciocco

Codice:
#include<stdio.h>
#include<math.h>
#include<float.h>

main(){
        double radice;
       radice=sqrt(3);
       printf("%1.20lf \n",radice);                                    
       

       system("pause");

       }
ottengo 1.73 205 080 756 887 72.
Un po' poco mi dico.
Scopro che esistono i long double a precisione quadrupla ma devc++ non li supporta. Scarico lcc win32 e provo sia questi long double sia i qfloat, estensione del suddetto compilatore.

il programma usato è il seguente

Codice:
#include<stdio.h>
#include<math.h>
#include<float.h>
#include<qfloat.h>

main(){
        long double radice1;
	   qfloat radice2;
       radice1=sqrt(3);
	   radice2=sqrt(3);
       printf("%1.30Lf \n",radice1);
		printf("%60.1qg \n",radice2);

       system("pause");

       }
e i risultati sono

radice1= 1.73 205 080 756 887 719 3 (tutto qua??)
radice2= 1.73 205 080 756 887 719 317 660 412 343 684 583 902 359 008 789 062 5

entrambi ben diversi da (fonte wiki)

1,73 205 080 756 887 729 352 744 634 150 587 236 694 280 525 381 038 ...

Allora ho installato Cgywin e tramite gcc ho compilato lo stesso programma mi restituisce

radice1= 1.73 205 080 756 887 719 318

ma come?
possibile che sbagli in questo modo? ma perchè?
MaxDembo81 è offline   Rispondi citando il messaggio o parte di esso