Volevo saggiare quanti decimali vengono valutati in C, con il mio compilatore gcc.
ho scritto questo codice:
#include<stdio.h>
int main()
{
long double ldPI=3.141592653589793238462643383;
double dPI=3.141592653589793238462643383;
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
printf("\n%.*f",27, dPI);
printf("\n%.*Lf",27, ldPI);
printf("\n%s\n","3.141592653589793238462643383");
}
il numero che ho preso per test è il pi greco con 27 cifre decimali, il programma restituisce:
8
12
3.141592653589793115997963469
3.141592653589793238512808959
3.141592653589793238462643383
il double ha 15 cifre decimali esatte
il long double 18 cifre decimali esatte
c'è un modo per avere una precisione più di un long double?
non ho trovato in C come si dichiara una variabile float32 o float64
quando imposto un calcolo es: sin(6) come posso imporre la precisione del calcolo interno?
se scrivo:
#include<stdio.h>
#include<math.h>
int main()
{
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
double d = sin(6);
printf("\nSin(6) double %.*f",60, d);
long double ld = sin(6);
printf("\nSin(6) longdoub %.*Lf",60, ld);
printf("\nSin(6) esatto %s","-0,27941549819892587281155544661189");
}
come risultato ho:
8
12
Sin(6) double -0.279415498198925860151575761847198009490966796875000000000000
Sin(6) longdoub -0.279415498198925860151575761847198009490966796875000000000000
Sin(6) esatto -0,27941549819892587281155544661189
16 cifre decimali esatte, sembra che il calcolo sia fatto in double, e cosa rappresentano i decimali oltre il 16esimo?