精华内容
下载资源
问答
  • 单精度和双精度的区别

    万次阅读 多人点赞 2019-02-26 16:56:24
    1、单精度和双精度的字节数不同。前者占4个字节;后者占8个字节。 2、单精度和双精度有效数字位数不同。前者为8位;后者为16位。 3、单精度和双精度表示的数的范围不同。前者的数值范围在-3.40E+38 到 +3.40E+...

    1、单精度和双精度的字节数不同。前者占4个字节;后者占8个字节。

    2、单精度和双精度有效数字位数不同。前者为8位;后者为16位。

    3、单精度和双精度表示的数的范围不同。前者的数值范围在-3.40E+38 到 +3.40E+38之间;后者的范围为-1.79E+308到+1.79E+308之间。

    4、单精度和双精度处理的速度不同。前者的速度更加的快。

    展开全文
  • c 语言单精度和双精度的区别 c 语言单精度和双精度的区别单精度是这样的格式 1 位符号 8 位指数 23 位小数 双精度是 1 位符号 11 位指数 52 位小数 区别就是它所能存储的数值范围大小不同 双精度变量能存储比单精度...
  • 计算机处理数据都涉及到数据转换各种复杂运算,比如,不同单位换算,不同进制(如二进制十进制)换算等,很多除法运算不能除尽,比如10÷3=3.3333.。。。。。。无穷无尽,而精度是有限,3.3333333x3并不等于10,...

    为什么会有精度问题?

    计算机处理数据都涉及到数据的转换和各种复杂运算,比如,不同单位换算,不同进制(如二进制十进制)换算等,很多除法运算不能除尽,比如10÷3=3.3333.。。。。。。无穷无尽,而精度是有限的,3.3333333x3并不等于10,经过复杂的处理后得到的十进制数据并不精确,精度越高越精确。float有8位有效数字,double有16位有效数据,float和double都是到大到一定的值自动开始使用科学计数法,并保留相关精度的有效数字,所以结果是个近似数。如果更精确的运算小数(比如金融,数学),希望结果更符合预期值应该使用Bigcimal。计算器应该也会有精度问题,也会有二进制十进制转换。

    java的双精度和单精度的区别

    现实问题中不但有整型数值,还有小数。Java语言也提供了针对小数的存储类型,分别是float类型和double类型。

    Java语言的浮点类型有两种不同的表示形式:十进制数和科学计数法。十进制数形式,由数字和小数点组成,且必须有小数点,如0.123、12.85、26.98等;科学计数法形式,如:2.1E5、3.7e-2等。其中e或E之前必须有数字,且e或E后面的指数必须为整数。

    科学计数法

    一种简化计数的方法,对于位数较小的数值,科学计数法没有什么优势,但对于位数较多的数值其计数方法的优势就非常明显了。例如:光的速速是300,000,000米/秒,全世界人口数大约是6,100,000,000。类似光的速度和世界人口数这样大数值的数,读、写都很不方便,仔细观察上面的两个数值,光的速度可以写成3*108,全世界人口数可以写成6.1*109。这种计数方法就是科学计数法,用Java语言科学计数法表示光速是3E8,世界人口数大约是6.1E9。

    一个较大的数值(》0)可以用下面的方式来表示:

    a * 10n (1《=a《10,n为整数)

    其中,a是该数值的有效位数,有效位数从左边第一个不是0的数起,到末尾数字为止,所有的数字(包括0,科学计数法不计10的n次方),称为有效数字。例如:光速是3E8,其有效数字是1位,值是3;世界人口数大约是6.1E9,其有效数字是2位,值是6.1。

    n是该数值的整数部分减1的正整数。

    一个较小的数值(《0)可以用下面的方式来表示:

    a * 10-n (1《=a《10,n为整数)

    a的取值同上面相同,n的取值为原数中左边第一个不为0的数字前面所有的0的个数(包括小数点前面的0)。

    在Java语言中,浮点类型有float和double两种,分别代表单精度和双精度的数值。精度是指描述一个数值的准确程度,在数学运算中,经常会用到近似数,近似数与原数值非常相近,但又不完全符合原数值,只能说在某种程度上近似。精度与近似数相似,也是用一个与原数值非常相近的数代替原来的数值。

    前面说过存储一个数值所用的字节越多,其精度越高,数值范围也越大。由此看来,精度与存储字节数密切相关,float类型的存储空间是4个字节,其表示的值范围约为10-38到1038,double类型的存储空间是8个字节,其表示的值范围约为10-308到10308,float存储数值的精度和范围要小于double存储数值的精度和范围。因此,float是单精度数值,double是双精度数值。

    ccd0f2fa3241652d2acd07571c11df29.png

    float变量可按如下方式声明:

    3e01cb36c2fe5b9cc4526c4dc9f1ccc9.png

    double变量可按如下方式声明:

    d99bbf6edaa68d6c6cae1ea02c75c68c.png

    数值赋值给float变量时,数值尾部要加上小写“f”或大写“F”声明为float数值,不然编译器会给出“可能损失精度的错误”如下图所示。因为在Java语言中,带小数的数值默认为是double类型,double类型转换为float类型,自然要损失精度了。

    3080c95ddcee1699521fe6b0ecb6de6e.png

    在 Java 程序中使用浮点数和小数时,不能假定浮点计算一定产生整型或精确的结果,浮点数不是精确值,使用它们会导致舍入误差。

    展开全文
  • 计算机处理数据都涉及到数据转换各种复杂运算,比如,不同单位换算,不同进制(如二进制十进制)换算等,很多除法运算不能除尽,比如10÷3=3.3333.。。。。。。无穷无尽,而精度是有限,3.3333333x3并不等于10,...

    为什么会有精度问题?

    计算机处理数据都涉及到数据的转换和各种复杂运算,比如,不同单位换算,不同进制(如二进制十进制)换算等,很多除法运算不能除尽,比如10÷3=3.3333.。。。。。。无穷无尽,而精度是有限的,3.3333333x3并不等于10,经过复杂的处理后得到的十进制数据并不精确,精度越高越精确。float有8位有效数字,double有16位有效数据,float和double都是到大到一定的值自动开始使用科学计数法,并保留相关精度的有效数字,所以结果是个近似数。如果更精确的运算小数(比如金融,数学),希望结果更符合预期值应该使用Bigcimal。计算器应该也会有精度问题,也会有二进制十进制转换。

    java的双精度和单精度的区别

    现实问题中不但有整型数值,还有小数。Java语言也提供了针对小数的存储类型,分别是float类型和double类型。

    Java语言的浮点类型有两种不同的表示形式:十进制数和科学计数法。十进制数形式,由数字和小数点组成,且必须有小数点,如0.123、12.85、26.98等;科学计数法形式,如:2.1E5、3.7e-2等。其中e或E之前必须有数字,且e或E后面的指数必须为整数。

    科学计数法

    一种简化计数的方法,对于位数较小的数值,科学计数法没有什么优势,但对于位数较多的数值其计数方法的优势就非常明显了。例如:光的速速是300,000,000米/秒,全世界人口数大约是6,100,000,000。类似光的速度和世界人口数这样大数值的数,读、写都很不方便,仔细观察上面的两个数值,光的速度可以写成3*108,全世界人口数可以写成6.1*109。这种计数方法就是科学计数法,用Java语言科学计数法表示光速是3E8,世界人口数大约是6.1E9。

    一个较大的数值(》0)可以用下面的方式来表示:

    a * 10n (1《=a《10,n为整数)

    其中,a是该数值的有效位数,有效位数从左边第一个不是0的数起,到末尾数字为止,所有的数字(包括0,科学计数法不计10的n次方),称为有效数字。例如:光速是3E8,其有效数字是1位,值是3;世界人口数大约是6.1E9,其有效数字是2位,值是6.1。

    n是该数值的整数部分减1的正整数。

    一个较小的数值(《0)可以用下面的方式来表示:

    a * 10-n (1《=a《10,n为整数)

    a的取值同上面相同,n的取值为原数中左边第一个不为0的数字前面所有的0的个数(包括小数点前面的0)。

    在Java语言中,浮点类型有float和double两种,分别代表单精度和双精度的数值。精度是指描述一个数值的准确程度,在数学运算中,经常会用到近似数,近似数与原数值非常相近,但又不完全符合原数值,只能说在某种程度上近似。精度与近似数相似,也是用一个与原数值非常相近的数代替原来的数值。

    前面说过存储一个数值所用的字节越多,其精度越高,数值范围也越大。由此看来,精度与存储字节数密切相关,float类型的存储空间是4个字节,其表示的值范围约为10-38到1038,double类型的存储空间是8个字节,其表示的值范围约为10-308到10308,float存储数值的精度和范围要小于double存储数值的精度和范围。因此,float是单精度数值,double是双精度数值。

    6399df207f7628ef71a9a6ddb4d164bf.png

    float变量可按如下方式声明:

    3e01cb36c2fe5b9cc4526c4dc9f1ccc9.png

    double变量可按如下方式声明:

    d99bbf6edaa68d6c6cae1ea02c75c68c.png

    数值赋值给float变量时,数值尾部要加上小写“f”或大写“F”声明为float数值,不然编译器会给出“可能损失精度的错误”如下图所示。因为在Java语言中,带小数的数值默认为是double类型,double类型转换为float类型,自然要损失精度了。

    3080c95ddcee1699521fe6b0ecb6de6e.png

    在 Java 程序中使用浮点数和小数时,不能假定浮点计算一定产生整型或精确的结果,浮点数不是精确值,使用它们会导致舍入误差。

    展开全文
  • 126) * 0.1 = 2**(-127) 0 00000000 00000000000000000000001 = +1 * 2**(-126) * 0.00000000000000000000001 = 2**(-149) (Smallest positive value) 双精度 IEEE双精度浮点标准表示需要64位字,其可以从左到右表示...

    注意:

    Nintendo 64有一个64位处理器,但是:

    Many games took advantage of the chip’s 32-bit processing mode as the greater data precision available with 64-bit data types is not typically required by 3D games, as well as the fact that processing 64-bit data uses twice as much RAM, cache, and bandwidth, thereby reducing the overall system performance.

    The term double precision is something of a misnomer because the precision is not really double.

    The word double derives from the fact that a double-precision number uses twice as many bits as a regular floating-point number.

    For example, if a single-precision number requires 32 bits, its double-precision counterpart will be 64 bits long.

    The extra bits increase not only the precision but also the range of magnitudes that can be represented.

    The exact amount by which the precision and range of magnitudes are increased depends on what format the program is using to represent floating-point values.

    Most computers use a standard format known as the IEEE floating-point format.

    单精度

    IEEE单精度浮点标准表示需要一个32位字,从左到右可以表示为从0到31编号。

    >第一位是符号位,S,

    >接下来的8位是指数位,’E’和

    >最后23位是分数’F’:

    S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF

    0 1 8 9 31

    由字表示的值V可以如下确定:

    >如果E = 255且F为非零,则V = NaN(“不是数字”)

    >如果E = 255且F为零,S为1,则V = -Infinity

    >如果E = 255且F为零,S为0,则V =无穷大

    >如果0

    意在表示通过用F加前缀而创建的二进制数

    隐式前导1和二进制点。

    >如果E = 0且F为非零,则V =( – 1)** S * 2 **(-126)*(0.F)。这些

    是“非规范化”值。

    >如果E = 0且F为零,S为1,则V = -0

    >如果E = 0并且F为零并且S为0,则V = 0

    尤其是,

    0 00000000 00000000000000000000000 = 0

    1 00000000 00000000000000000000000 = -0

    0 11111111 00000000000000000000000 = Infinity

    1 11111111 00000000000000000000000 = -Infinity

    0 11111111 00000100000000000000000 = NaN

    1 11111111 00100010001001010101010 = NaN

    0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2

    0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5

    1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5

    0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)

    0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127)

    0 00000000 00000000000000000000001 = +1 * 2**(-126) *

    0.00000000000000000000001 =

    2**(-149) (Smallest positive value)

    双精度

    IEEE双精度浮点标准表示需要64位字,其可以从左到右表示为从0到63编号。

    >第一位是符号位,S,

    >接下来的11位是指数位,’E’和

    >最后52位是分数’F’:

    S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    0 1 11 12 63

    由字表示的值V可以如下确定:

    >如果E = 2047且F为非零,则V = NaN(“不是数字”)

    >如果E = 2047且F为零,S为1,则V = -Infinity

    >如果E = 2047,F为零,S为0,则V =无穷大

    >如果0

    意在表示通过用F加前缀而创建的二进制数

    隐式前导1和二进制点。

    >如果E = 0且F为非零,则V =( – 1)** S * 2 **(-1022)*(0.F)

    是“非规范化”值。

    >如果E = 0且F为零,S为1,则V = -0

    >如果E = 0并且F为零并且S为0,则V = 0

    参考:ANSI / IEEE标准754-1985,二进制浮点算术标准。

    展开全文
  • 单精度、双精度和半精度浮点格式之间的区别 IEEE 浮点算术标准是用来衡量计算机上以二进制所表示数字精度的通用约定。在双精度格式中,每个数字占用64位,单精度格式占用32位,而半精度仅16位。 要了解其中工作原理...
  • 编排 | strongerHuang微信公众号|嵌入式专栏我们学过数学,都知道有理数和无理数,然后在有理数中有一类叫浮点数的...下面就来讲讲关于浮点数中,单精度双精度、多精度和混合精度计算的区别。嵌入式专栏1关于圆周...
  • 展开全部一、字e68a...二、指数域位数不同1、float指数域是8位,可表达范围为0~255。2、double指数域是11位,可表达范围为0~2047。三、指数域位数不不同1、float小数域是23位。2、...
  • 在蓝桥杯试题计算圆面积时使用float表示范围较小,出现负值。应使用double
  • 关注+星标公众号,不错过精彩内容编排 | strongerHuang微信公众号|嵌入式专栏我们学过数学,都知道有理数无理数,然后在有理数中有一类叫浮点数数字,不知道大家对这些还有...
  • 单精度浮点数和双精度浮点数Here you will learn about difference between float and double i.e. float vs double. 在这里,您将了解float和double的区别,即float vs double。 These are two commonly used ...
  • Java语言浮点类型有两种不同表示形式:十进制数科学计数法。十进制数形式,由数字小数点组成,且必须有小数点,如0.123、12.85、26.98等;科学计数法形式,如:2.1E5、3.7e-2等。其中e或E之前必须有数字,且e或E...
  • 在C/C++中float是32位,double是64位,两者在内存中存储方式能够表示的精度均不同,目前C/C++编译器标准都遵照IEEE制定浮点数表示法来进行float,double运算。 无论是float还是double,在内存中存储...
  • vb作业,单精度双精度的区别

    千次阅读 2012-05-22 16:50:00
    13.25用二进制表示结果及singledouble 1101.01 因为1101.01=2^3+2^2+0*2^1+2^0+0*2^-1+2^-2 =8+4+0+1+0+1/4=13.25 integer:只能表示整数,不能有小数点,正...single:单精度,可以有小数点,最大长度是8位
  • 含义:表明单精度和双精度精确范围不一样,单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。 原因:不管float还是...
  • 大端存储小端存储的区别
  • floatdouble的区别

    千次阅读 多人点赞 2019-02-15 15:39:59
    floatdouble的区别 两者的主要区别如下: 1.在内存中占有的字节数不同 单精度浮点数在机内存占4个字节 双精度浮点数在机内存占8个字节 2.有效数字位数不同 单精度浮点数有效数字8位 双精度浮点数有效数字16位 3....
  • floatdouble精度问题

    2017-01-05 16:03:25
    但double消耗内存是float两倍,double运算速度比float慢得多,C语言中数学函数名称double float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。  floatdouble精度是由尾数位数...
  • float : 单精度浮点数 double : 双精度浮点数 两者主要区别如下: 01.在内存中占有字节数不同 单精度浮点数在机内存占4个字节 双精度浮点数在机内存占8个...一般来说,CPU处理单精度浮点数速度比处理双精度
  • float : 单精度浮点数 double : 双精度浮点数 两者主要区别如下: 01.在内存中占有字节数不同 单精度浮点数在机内存占4个字节 双精度浮点数在机内存占8个字节 ...双精度浮点数表示范围:-1.79E+308~-1.79E+...
  • float : 单精度浮点数double : 双精度浮点数两者主要区别如下:01.在内存中占有字节数不同单精度浮点数在机内存占4个字节双精度浮点数在机内存占8个字节02.有效数字位数不同单精度浮点数有效数字8位双精度浮点数...
  • 基本数据类型floatdouble的区别

    千次阅读 2019-07-11 17:51:39
    分享知识 传递快乐 float:单精度浮点数 double:双精度浮点数 两者主要区别如下: ... 单精度浮点数表示范围:-2^128 ~ +2^128(float指数范围为-127~128), CPU处理单精度浮点数速度比处理双...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 243
精华内容 97
关键字:

单精度和双精度的区别