Get precision of about 20-30 digits in C
So, I'm trying to calculate a certain value to a rather large precision. The expression in C is:
long double t = 2.0L+.2L*(sp)+s.missRate*50L;
my result is: 11.575345
But the 'real' result is: 11.575345222开发者_JAVA百科971968
I'm using long doubles, which are the largest primitive type AFAIK. I shouldn't have to use any precision libraries to do this. So, what C type has this kind of precision?
The result is probably precise enough, but you are printing it rounded to 6 digits after the decimal point. Increase your printing precision, like this:
long double var;
printf("%.20Lf\n", var); //20 digits after the radix
The double type doesn't support more than about 16 decimal digits (http://en.wikipedia.org/wiki/IEEE_754). So don't count on the additonal 4-14 you mention in the title.
To get more I suggest you turn to gmplib.org
精彩评论