为了更好地表明浮点型,大家应用float,double和long double。有什么不同?

float多少位小数-float有效数字七位详解-第1张图片双精度是浮点数精密度的二倍。

浮点型是32位IEEE 754单精度浮点型的1位标记(8位是指数值,23 *是标值),即浮点型具备7位十进制数据精密度。

Double是一个64位的IEEE 754双精度浮点型(标记1位,指数值11位,值52 *位),即double具备15位小数的精密度。

float多少位小数-float有效数字七位详解-第2张图片使我们举个事例:

针对二次方程x2–4.000000 x 3.999999 = 0,精准到10个有效数字的根是r1 = 2.000316228和r2 = 1.999683772。

// C program to demonstrate// double and float precision values#include #include // utility function which calculate roots of// quadratic equation using double valuesvoiddouble_solve(doublea, doubleb, doublec){doubled = b*b - 4.0*a*c;doublesd = sqrt(d);doubler1 = (-b sd) / (2.0*a);doubler2 = (-b - sd) / (2.0*a);printf("%.5ft%.5fn", r1, r2);}// utility function which calculate roots of// quadratic equation using float valuesvoidfloat_solve(floata, floatb, floatc){floatd = b*b - 4.0f*a*c;floatsd = sqrtf(d);floatr1 = (-b sd) / (2.0f*a);floatr2 = (-b - sd) / (2.0f*a);printf("%.5ft%.5fn", r1, r2);}// driver programintmain(){floatfa = 1.0f;floatfb = -4.0000000f;floatfc = 3.9999999f;doubleda = 1.0;doubledb = -4.0000000;doubledc = 3.9999999;printf("roots of equation x2 - 4.0000000 x 3.9999999 = 0 are : n");printf("for float values: n");float_solve(fa, fb, fc);printf("for double values: n");double_solve(da, db, dc);return0;}

輸出:

方程式x2–4.0000000 x 3.9999999 = 0的根为:

针对浮点数值:2.00000 2.00000

针对双精度值::2.00032 1.99968

根据之前的事例,你把握了这二种基本数据类型的差别了没有?期待对您有协助~

评论(0条)

刀客源码 游客评论