精华内容
下载资源
问答
  • 什么是双精度浮点数

    千次阅读 2021-05-23 02:07:56
    问题一:什么是单、双精度浮点数浮点就是小数点位置不确定,比如123.43,6557.521.在C语言中,一般单精度数据类型比如int,数据的范围是2的31次方,而双精度类型的整型比如long int的数据范围是2的63次方.所以双精度和单...

    问题一:什么是单、双精度浮点数浮点就是小数点位置不确定,比如123.43,6557.521.在C语言中,一般单精度数据类型比如int,数据的范围是2的31次方,而双精度类型的整型比如long int的数据范围是2的63次方.所以双精度和单精度主要的区别在于数据的范围大小.

    通俗的讲

    双精度的精度比单精度高

    表示的小数点后的位数多

    比方说单精度能最小表示到0.01

    双精度就能表示到0.0001

    以上只是例子,实际的精度不是这样,具体到多少记不大清楚了

    问题二:什么叫单精度浮点型?什么叫双精度浮点型?单精度浮点型(float )专指占用32位存储空间的单精度(single-precision )值。单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。

    double float数据类型,计算机中表示实型变量的一种变量类型。此数据类型与单精度数据类型(矗loat)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,;双精度型占8

    个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。

    问题三:C语言中单精度浮点数和双精度分别如何表示?有什么差别?类型 比特数 有效数字 数值范围 float 32 6-7 -3.4*10(-38)~3.4*10(38) double 64 15-16 -1.7*10(-308)~1.7*10(308) long double128 18-19 -1.2*10(-4932)~1.2*10(4932)简单来说,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字(见我的double_float文件)还有,有个例子:在C和C++中,如下赋值语句float a=0.1;编译器报错:warning C4305: 'initializing' : truncation from 'const double ' to 'float '原因:在C/C++中(也不知道是不是就在VC++中这样),上述语句等号右边0.1,我们以为它是个float,但是编译器却把它认为是个double(因为小数默认是double),所以要报这个warning,一般改成0.1f就没事了。通常的做法,经常使用double,而不喜欢使用float

    问题四:浮点数的单精度和双精度是什么意思?高级语言的简单数据类型的一种,单精度浮点数占据32位二进制,1位为符号位,0代表正数,1代表负数,8位指数位,即指数可以达到10进制数据的2的8次方,尾数23位,即尾数可以达到2的23次方。

    问题五:什么叫单精度浮点型和双精度浮点型就是精确度,比如float就是精确到小数点后面4个日双精度double精确到小数点后面8个0。。

    问题六:双精度浮点数在C语言中是什么意思?就是double型啊.单精度浮点数float是32位,double则是64位,位数多,精度当然越大.具体到浮点数结构,你随便一搜就有了,我要说也顶多是胆网址贴过来.

    问题七:单精度float 和双精度double到底是什么区别啊单精度实数在内存中占32bit 有效数字为6~7位

    双精度实数占内存单元为64bit 有效数字为15~16位

    没有说明时,实型常量是作为双精度处理的,若要使用单精度需在后面加上字母f或F,如123.45f

    问题八:c语言分别定义一个单精度和一个双精度的浮点数float a;//单精度

    double b;//双精度

    问题九:单精度浮点和双精度浮点有什么区别如同字面, 就是表示精度的区别。双精度浮点数使用8个字节表示,有大约16位十进制有效数字。而单精度饥点数使用4字节,只有7位十进制有效数字。PS. Titan并没有阉割双精度性能,它在驱动中是有个开关的,打开后提供完整的双精度性能,但显卡会略微降频运行,实际峰值DP计算速度1.3TFlops。

    展开全文
  • 1809: 输入一个双精度浮点数,保留12位小数输出 #include<stdio.h> int main() { double a; scanf("%lf", &a); printf("%.12lf\n", a); return 0; }

    1809:
    输入一个双精度浮点数,保留12位小数输出
    #include<stdio.h>
    int main()
    {
    double a;

    scanf("%lf", &a);
    printf("%.12lf\n", a);
    
    return 0;
    

    }

    展开全文
  • 此文章描述了如何将十进制小数转换为二进制小数以及浮点数再内存中时如何进行存储。 二进制小数 在计算机中,无论什么数据,最终存储都为二进制,对于整数部分很容易表示,但是对于非整数则比较困难。例如,十进制数...

    前言

    对于十进制的整数使用二进制表示很简单,但是对于十进制小数如何使用二进制进行存储?十进制的小数又何如使用二进制小数表示?此文章描述了如何将十进制小数转换为二进制小数以及浮点数再内存中时如何进行存储。

    二进制小数

    在计算机中,无论什么数据,最终存储都为二进制,对于整数部分很容易表示,但是对于非整数则比较困难。例如,十进制数0.125可表示为二进制0.001,怎么得来的?简单的计算可以用0.125不断乘2,结果小于1将二进制位记为0,结果大于1时将二进制位记为1

    0.125 * 2 = 0.25  二进制位记作 0
    0.25  * 2 = 0.5   二进制位记作 0
    0.5   * 2 = 1     二进制位记作 1
    

    所以得出结果为0.001

    另外可以把可以把十进制数0.125看做1/2/2/2 = 1*2^-3,十进制1换算为二进制还为1,二进制的负指数则相当于二进制数1右移位,用2的指数记为2^-3

    上面的例子因为能够用2的指数表示,所以能够被二进制精确的表达,但是有些情况,则无法使用二进制准确表达,例如一个人尽皆知的例子:十进制数0.1如何使用二进制表达?你会发现你无法用2的指数去表达它,即使用我们上面的计算方法:

    0.1   * 2 = 0.2  二进制位记作 0
    0.2   * 2 = 0.4  二进制位记作 0
    0.4   * 2 = 0.8  二进制位记作 0
    0.8   * 2 = 1.6  二进制位记作 1 
    0.6   * 2 = 1.2  二进制位记作 1
    0.2   * 2 = 0.4  二进制位记作 0
    0.4   * 2 = 0.8  二进制位记作 0
    0.8   * 2 = 1.6  二进制位记作 1
    ...
    

    你会发现,它会无穷无尽的循环0.0001100110011...,这便是为何无法使用二进制数精确表达十进制小数。类似于使用十进制数也无法精确表达,永远是0.33333333...

    浮点数

    浮点数是相对于定点数而言的。
    十进制数1234用科学计数法可写作:1.234*10^3,类似的,可用二进制表示为‭0.10011010010*2^11‬,我们称10011010010为尾数(mantissa/fraction),2称为基数(Radix),11则称之为指数(Exponent)。如此,小数点的位置根据指数的不同而浮动,称为浮点数。

    那么在内存中,是如何使用二进制表示小数?IEEE_754对此进行了标准化。

    单精度浮点数(Float)

    单精度浮点数的存储使用32位二进制数,最高位31是符号位,用来表示正负数,23-30存储指数,低位0-22存储尾数。
    需要注意的是,指数位的存储有两种方式:

    • 一种为有符号整数,意为有1位用来存储是正指数还是负指数。
    • 另外一种情况存储为无符号整数,使用指数偏移量来计算是正指数还是负指数,例如,单进度浮点数的指数偏移量为127,意味着所存储的指数需要减去127,得出的结果便是正确的指数。

    另外关于尾数的存储,在正规数(normal numbers)的情况下,二进制小数的表示总是以1.x开头,例如二进制数1001会表示为1.001*2^3而不是0.1001*2^40.01001*2^5。这在存储时则可省略开头的1,上面的1001则可存储为001且指数为3

    我们看一个具体的例子:十进制数0.15625

    符号(Sign):0
    指数(Exponent):偏移量计算方法,实际上我们应当存储的是-3指数,
                    用偏移量则为 127 - 3 = 124 转换为二进制为 0111 1100‬
    尾数(Fraction):按照上面的十进制小数计算二进制小数得出0.00101 = 1.01 * 2^-3,
                    去除前导1和指数得出尾数 = 01
    

    双精度浮点数(Double)

    双精度浮点数的计算类似于单精度浮点数,只不过存储大了一倍,它使用64位二进制数进行存储,与单精度浮点数相似,最高位63是符号位,用来表示正负数,52-62存储指数,低位0-51存储尾数,它的指数偏移为1023

    其它值

    无论是单精度还是双精度浮点数,都存在一些特殊的值,例如次正规数(subnormal numbers)和0以及±无穷大的数,还有无法正确转换的值NaN

    结尾

    精度越高的存储所需要的存储空间是越大的,当尾数过大无法存储时,根据IEEE_754标准进行丢失精度的舍入。

    Reference

    展开全文
  • 计算机程序中的浮点数分为单精度浮点数和双精度浮点数。单精度和双精度精确的范围不一样。计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。稍大一点的单位是字节(Byte,简写为B)。再大一级的是千...

    上节课简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。

    单精度和双精度精确的范围不一样。

    计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。

    稍大一点的单位是字节(Byte,简写为B)。

    再大一级的是千字节(kilo Bytes),用k来表示。

    再大一级的单位是兆字节(Mega Bytes),用M来表示。一张照片的大小通常为1~3M。

    再大一级的单位为G。一部高清电影的大小通常为1~2G。

    再大一级的单位为T。

    换算关系为:

    1B = 8bit

    1k = 1024B = 2^10 B

    1M = 1024k = 2^20 B

    1G = 1024M = 2^30 B

    1T = 1024G = 2^40 B

    单精度(float)在计算机中存储占用4字节,32位,有效位数为7位(6位小数+小数点)。

    双精度(double)在计算机中存储占用8字节,64位,有效位数为16位(15位小数+小数点)。

    不管是float还是double,在计算机中的存储都遵循IEEE规范,使用二进制科学计数法,都包含三个部分:符号位、指数位和尾数部分。其中float的符号位、指数位(即整数部分)、尾数部分分别为1, 8, 23。双精度则分别为1, 11, 52。

    format,png

    float

    format,png

    double

    精度主要取决于尾数部分的位数,float为23位,最小为2的-23次方,约等于1.19乘以10的-7次方,所以float小数部分只能精确到后面6位,加上小数点算做一位,即有效数字为7位。

    类似,double 尾数部分52位,最小为2的-52次方,约为2.22乘以10的-16次方,所以精确到小数点后15位,有效位数为16位。

    程序验证:

    #include

    int main()

    {

    float a = 1.123456789;

    printf("a = %20.9f\n", a);

    double b = 2.123456789;

    printf("b = %20.9f\n", b);

    return 0;

    }

    注意:这里%20.9f表示浮点数总共有20位,其中小数占9位。不足20位的部分,左侧用空格来填充。

    运行结果:

    a = 1.123456836

    b = 2.123456789

    从运行结果可以看出,单精度浮点数小数部分只有前6位是准确的,后三位是不准确的。双精度小数部分9位都是准确的。

    展开全文
  • 计算机程序中的浮点数分为单精度浮点数和双精度浮点数。单精度和双精度精确的范围不一样。计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。稍大一点的单位是字节(Byte,简写为B)。再大一级的是千...
  • 背景:做到一题四则运算,除数不为零的题目 发现当除数为0.00000000000000001时,测试点输出为...解决:用fabs()函数取双精度浮点数double的绝对值,头文件是math.h 区别:整数类型取绝对值用的是abs()。 ...
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double至于浮点型就是跟int ,string类型差不多。都是数据类型。浮点型浮点型别给我...
  • 关于IEEE 754标准下的浮点数 (全文以64位为例,规定64位中包括1位符号位,11位阶码和52位尾数) 1.符号位 没什么可说的,一位,分正负罢了。 2.阶码 阶码由于偏移量的存在,其值会被加上1023(在IEEE754中特殊规定...
  • 浮点数在计算机中的存储十进制浮点数格式:浮点数格式使用科学计数法表示实数。科学计数法把数字表示为系数(coefficient)(也称为尾数(mantissa)),和指数 (exponent)两部分。比如 3.684*10^2. 在十进制中,指数的...
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double至于浮点型就是跟int ,string类型差不多。都是数据类型。浮点型浮点型别给我...
  • 浮点数在计算机中的存储十进制浮点数格式:浮点数格式使用科学计数法表示实数。科学计数法把数字表示为系数(coefficient)(也称为尾数(mantissa)),和指数 (exponent)两部分。比如 3.684*10^2. 在十进制中,指数的...
  • (posted on may 31,2011)(Firstly justified on jun 6,2011)十进制数常用科学计数法表示,如11=1.1*10^1, 111=1.11*10*2. 同样地,二进制数也有科学计数法表示,如64, 1000000=1.000000*2^6; 127, 1111111=1.111111*...
  • 涉及Python数学运算及显示相关操作技巧,注释备有详尽的说明,需要的朋友可以参考下#coding=utf8def doubleType():'''''Python中的浮点数是双精度浮点数,可以用十进制或科学计数法表示。实际精度依赖于机器架构和创建...
  • 输入一个字符,一个数字,一个单精度浮点数,一个双精度浮点数,按顺序输出它们四个 且数字指定占4个字符宽靠右对齐,单精度浮点数保留2位小数,双精度保留12位小数,占一行输出、空格分隔 #include<stdio.h> ...
  • 一、复习10进制转2进制1)整数部分:除2取余,逆序2)小数部分:乘2取整,正序在线工具二、了解IEEE 754双精度浮点数规范1) 通过2进制的科学计数法存储。和10进制的科学计数法类似,二进制的科学技术法格式为1.xxx*2^N...
  • 浮点数详解
  • 用"lf”输出不了双精度可能是用户定义时定义为单精度,那么可能不能用双精度输出。至于输出答案有时为正零有时为负零,那么可能是用户求出的答案超出精度范围了。扩展资料:1、printf()函数printf()函数是格...
  • 输入一个双精度浮点数,输出这个浮点数的%f结果、保留5位小数的结果、%e、%g格式的结果 #include<stdio.h> int main() { double a; scanf("%lf", &a); printf("%lf\n", a); printf("%.5lf\n", a); printf...
  • 0引言C程序设计的教科书中一般都不涉及浮点数的运算,浮点数的运算涉及到计算机的复杂的硬件结构和理解起来有一定难度的表示方法[1]。然而浮点数的运算在计算机软件系统中可以说是无处不在的。大多数编程语言都将浮点...
  • 小数点分为整数部分和小数部分,它们之间用点分隔. 例如,0.0、75.0、4.023、0.27,-937.198 -0.27等都是合法的小数.... 任何十进制数字都可以用指数形式表示.C语言支持两种十进制形式. 但是在撰写本文时,C...
  • 有一篇我们是获取float如何转化为字节的过程,这次我们测试double C#关于32位浮点数Float(Real)一步步按位Bit进行解析
  • 浮点数表示方法

    千次阅读 2021-03-26 01:06:00
    但用定点数表示小数时,存在数值范围、精度范围有限的缺点,所以在计算机中,我们一般使用「浮点数」来表示小数。 这篇文章,我们就来详细看一下浮点数到底是如何表示小数的,以及浮点数的的范围和精度有多大。 ...
  • 一、表示方法在计算机中,浮点数一般由三部分组成:符号位+阶码+尾数。这种浮点数是用科学记数法...(2) 双精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。(3) 临时浮点数(80位),阶码15位,尾数65位(内含1位...
  • 分别进行100万次双精度与单精度浮点数加运算,计算各消耗多少时间,打印输出累加结果。 测试代码 void fpSpeedTest(void) { int begin_tick, end_tick; double dp1 = 1.0; double dp2 = 1.0; double dp = 0.0; ...
  • “一旦浮点数的位数确定后,合理分配阶码和尾数的位数,直接影响浮点数表示范围和精度。通常对于短实数(总位数为32位),阶码取8位(含阶符一位),尾数取24位(含数符一位);对于长实数(总位数64位),阶码取...
  • 单精度浮点数: 1位符号位 8位阶码位 23位尾数双精度浮点数: 1位符号位11位阶码位 52位尾数实数在内存中以规范化的浮点数存放,包括数符、阶码、尾数。数的精度取决于尾数的位数。比如32位机上float型为23位 double...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,089
精华内容 28,035
关键字:

双精度浮点数表示方法