`

float和double精度

 
阅读更多
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的范围和精度

    通过创建一个函数来验证Number类型的精度和范围。例如,create or replace function func_test(p_type number) return number is ... 5. 结论 Number类型的总长度是40位,其中可能包括小数点,负号位。了解Number...

    float double精度的详细解释

    ### float与double精度详解 #### 一、浮点数的基础概念 在计算机科学中,`float` 和 `double` 是两种常用的浮点数类型,它们主要用于处理实数运算。这两种类型的区别主要体现在精度和范围上。 #### 二、浮点数的...

    float和double

    float和double浮点数类型的精度和范围解析 浮点数类型float和double是编程语言中最常用的数值类型,但是它们的精度和范围却是程序员需要注意的重要问题。本文将详细解释float和double的范围和精度,及其在商业计算...

    基于C++浮点数(float、double)类型数据比较与转换的详解

    在C++编程语言中,浮点数类型包括`float`和`double`,它们用于表示非整数值。本文主要探讨的是这两个类型的数据在比较和转换过程中的一些关键知识点。...理解这些细节对于编写高精度和鲁棒的C++代码至关重要。

    float、double类型介绍.zip

    2. **精度和误差**:解释了由于浮点数不是精确表示,所以可能会存在舍入误差,尤其是在数学运算中。 3. **浮点运算的不一致性**:讨论了不同平台上的浮点运算可能产生微小差异的问题。 4. **类型转换**:如何将整数...

    解决java数值范围以及float与double精度丢失的问题

    解决java数值范围以及float与double精度丢失的问题 Java中的数值范围和浮点数精度问题是许多开发者经常遇到的问题。下面我们将详细探讨Java中的数值范围、float和double类型的精度问题,并且提供解决方案。 一、...

    详解iOS之关于double/float数据计算精度问题

    本篇文章将详细介绍 iOS 中 double/float 数据计算精度问题的根源、解决方案和高精度计算方法。 一、double/float 数据计算精度问题的根源 在 iOS 开发中,我们经常使用 double 和 float 数据类型来表示小数。但是...

    HEX-Float转换工具 16进制转成float 或double类型数据的一个小工具

    特别是在处理二进制数据或者进行低级编程时,了解如何将十六进制(HEX)转换为浮点数(float)或双精度浮点数(double)至关重要。这个"HEX-Float转换工具"就是这样一个实用程序,它帮助用户方便快捷地完成这种转换...

    十六进制(HEX)和浮点类型(float、double)转换工具

    而浮点类型,如float和double,是用于存储小数的数值类型,广泛应用于科学计算、图形处理等领域。了解和掌握十六进制与浮点类型的转换是每一位IT专业人员的基本技能。 十六进制是一种逢16进1的计数系统,使用16个...

    float_double存储问题

    float 和 double 是 C 语言和 C# 语言中最常用的浮点类型,它们分别使用单精度和双精度来存储浮点数据。 float 数据占用 32bit,而 double 数据占用 64bit。 在 IEEE 的规范下,float 遵从的是 IEEE R32.24,而 ...

    C# 按照IEEE 754标准对Float和Double类型进行转换

    本话题主要聚焦于如何根据IEEE 754标准来处理和转换浮点数类型,包括`float`和`double`。IEEE 754是国际上广泛采用的一个标准,用于定义浮点数的存储格式,它规定了二进制浮点数的表示方法,包括正负号、指数和尾数...

    详解java中float与double的区别

    float 和 double 都可以用来表示实数,但是它们的精度和取值范围不同。 float 的精度是 8 位有效数字,取值范围是 10 的 -38 次方到 10 的 38 次方,而 double 的精度是 17 位有效数字,取值范围是 10 的 -308 次方...

    float_double_explicit.rar_float

    浮点数(float)通常占用4字节(32位),而双精度浮点数(double)则占用8字节(64位),它们都遵循IEEE 754标准,以提供标准化的精度和运算规则。在进行数学计算时,尤其是涉及精度和速度的场景,理解和正确使用这...

    十进制和十六进制转换成float、double数据

    本文将详细讲解如何将十进制和十六进制数值转换为浮点数(float)和双精度浮点数(double)。 首先,让我们从十进制开始。十进制是我们日常生活中最常用的计数系统,其基数为10。在MATLAB中,我们可以通过直接输入...

    浮点数的存储结构(double和float)

    3. **精度和范围**:由于`float`和`double`的位数不同,它们的精度和表示的数值范围也有所差异。`double`通常具有更高的精度和更大的数值范围,因此在需要更高精度的计算中更常被使用。 了解这些基础知识后,可以...

    float和double类型数据在内存中的存储方法

    `double`与`float`类似,但具有更高的精度和范围。在64位的`double`中,分配如下: - 符号位:1位 - 指数位:11位 - 尾数位:52位 对于`double`类型,偏移量(Bias)为1023。同样,`123.45`的`double`表示会更复杂...

    C语言中floatdouble的区别.pdf

    在实际编程中,float和double类型都可以用来存储浮点数,但它们的精度和数值范围不同。一般来说,double类型的精度更高,数值范围更广,但它占用的内存空间也更大。因此,在选择浮点类型时,需要考虑到程序的具体...

    C语言中floatdouble的区别[参照].pdf

    例如,在科学计算和工程计算中,double类型的浮点数可能是更好的选择,因为它提供了更高的精度和更大的表示范围。但是在一些需要速度和效率的应用场景中,float类型的浮点数可能是更好的选择,因为它占用更少的内存...

    float型和double型数据的存储方式1

    本文主要探讨了浮点类型数据,即float和double在内存中的表示方式,以及由此产生的精度问题。 首先,浮点类型数据有两种主要形式:单精度(float)和双精度(double)。float在内存中占用32位,而double占用64位。这...

Global site tag (gtag.js) - Google Analytics