C语言中数据的精度是什么意思?

Python014

C语言中数据的精度是什么意思?,第1张

c语言中:

float浮点数7位有效数字。

double双精度数16位有效数字。

单精度数的尾数用23位存储,加上默认的小数

点前的1位1,2^(23+1) = 16777216。因为 10^7 <16777216 <

10^8,所以说单精度浮点数的有效位数是7位。 双精度的尾数用52位存储,2^(52+1) = 9007199254740992,10^16

<9007199254740992 <10^17,所以双精度的有效位数是16位

单精度浮点数的实际有效精度为24

位二进制,这相当于 24*log102≈7.2

位10进制的精度,所以平时我们说“单精度浮点数具有7位精度”。(精度的理解:当从1.000...02变化为1.000...12时,变动范围

2-23,考虑到因为四舍五入而得到的1倍精度提高,所以单精度浮点数可以反映2-24的数值变化,即24位二进制精度)

浮点数7位有效数字。(应该是单精度数)

双精度数16位有效数字。

浮点数取值范围:

负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。

双精度数取值范围:

负值取值范围-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。

所以精度是测量值与真值的接近程度。包含精密度和准确度两个方面精度的等级是以它的允许误差占表盘刻度值的百分数来划分的,其精度等级数越大允许误差占表盘刻度极限值越大。量程越大,同样精度等级的,它测得压力值的绝对值允许误差越大。

精度

经常使用的的精度为 2.5 、1.5 级,如果是1.0和0.5级的属于高精度,现在有的数字已经达到0.25级。

其实就是有效位数不一样。

浮点型变量分为单精度(float)、双精度(double)和长双精度(longdouble)3类。在TurboC中:

比特(位)数有效数字

float326-7

double6415-16

longdouble12818-19

ANSIC并未具体规定每种类型数据的长度、精度、数值范围,有的系统将double所增加的32位全用于存放小数部分,这样可以增加数值的有效范围,减少舍入误差。有的系统则将所增加的位(bit)一部分存放指数部分,这样可以扩大数值范围