float与double的范围和精度
1 范围
float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:共32位
1bit(符号位)
8bits(指数位)
23bits(尾数位)
double:共 64位
1bit(符号位)
11bits(指数位)
52bits(尾数位)
于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
2 精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
分享到:
相关推荐
float double精度的详细解释,小数点位数等等
数据精度问题 float与double的范围和精度
float和double为什么不可以使用精度计算的解析。
浮点数在内存中的存储机制和整型数...1、将字符串转换为float、double过程存在精度损失,只是float、double各自损失的精度不相同而已std::string str=”8.2″;float cc=atof(str.c_str()); //cc的值为8.1999998std:
C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用64bit
下面小编就为大家带来一篇解决java数值范围以及float与double精度丢失的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
解析参见:https://handsome-man.blog.csdn.net/article/details/107333529
[C語言][教學]_基本語法#09._基本型態二_-_浮點數Float與雙精度浮點數Double
本篇文章主要介绍了iOS之关于double/float数据计算精度问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
iOS 解决字符串floatValue,doubleValue等后计算不精确问题,一句话解决精确计算,精确比较
C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,...
Java中的简单浮点数类型float和double不能够进行运算,因为大多数情况下是正常的,但是偶尔会出现如上所示的问题。这个问题其实不是JAVA的bug,因为计算机本身是二进制的,而浮点数实际上只是个近似值,所以从二进制...
本文实例分析了C#中float的取值范围和精度。分享给大家供大家参考。具体分析如下: float类型的表现形式: 默认情况下,赋值运算符右侧的实数被视为 double。 因此,应使用后缀 f 或 F 初始化浮点型变量,如以下示例...
[iOS][Swift][中文]_基礎語法#06._小數、整數Int與雙精度浮點數Double,_Float
S7-200SMART 64位浮点数转换为32位浮点数指令库文件Double_to_Float
4、如何区分FLOAT和DOUBLE?以下是FLOAT和DOUBLE的区别: 浮点数以8位精度存储在FLOAT中,并且有四个字节。 浮点数存储在DOUBLE中,精度为18位,有八个字节。 5、区分CHAR_LENGTH和LENGTH?CHAR_LENGTH...
Trans(double)返回2进制 TransToHex(double)返回16进制 GetCrcstring(string data, ref string crc)返回冗余校验
下表中规划了每个浮点类型的存储大小和范围: 类型 大小 范围(有符号) 范围(无符号) 用途 ==float== 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+...