- 40
- 0
- 约3.34千字
- 约 7页
- 2022-03-01 发布于浙江
- 举报
PAGE
PAGE 1
c语言单精度和双精度的区别
双精度是1位符号,11位指数,52位小数。 区分就是它所能存储的数值范围大小不同, 双精度变量能存储比单精度变量更大或更小的值。 -- -- float 能赋值 +/- 3.40282e+038 -- -- double能赋值 +/- 1.79769e+308 含义:表明单精度和双精度精确的范围不一样,单精度,也即float,一般在(计算机)中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。 缘由:不管float还是double 在计算机上的存储都遵循IEEE规范,使用二进制科学计数法,都包含三个部分:符号位,指数位和尾数部分。其中float的符号位,指数位,尾数部分分别为1, 8, 23. 双精度分别为1, 11, 52。 精度主要取决于尾数部分的位数,float为23位,除去全部为0的状况以外,最小为2的-23次方,约等于1.19乘以10的-7次方,所以float小数部分只能精确到后面6位,加上小数点前的一位,即有效数字为7位。 类似,double 尾数部分52位,最小为2的-52次方,约为2.22乘以10的-16次方,所以精确到小数点后15位,有效位数为16位。 单精度和双精度数值类型最早消失在C语言中(比较通用的语言里面),在C语言中单精度类型称为浮点类型(Float),顾名思义是通过浮动小数点来实现数据的存储。这两个数据类型最早是为了科学计算而产生的,他能够给科学计算供应足够高的精度来存储对于精度要求比较高的数值。但是与此同时,他也完全符合科学计算中对于数值的观念: 当我们比较两个棍子的长度的时候,一种方法是并排放着比较一下,一种方法是分别量出长度。但是事实上世界上并不存在两根完全一样长的棍子,我们(测量)的长度精度受到人类目测力量和测量工具精度的限制。从这个意义上来说,推断两根棍子是否一样长丝毫没有意义,由于结果肯定是False,但是我们可以比较他们两个哪个更长或者更短。这个例子很好地概括了单精度/双精度数值类型的设计初衷和存在意义。 基于上述熟悉,单精度/双精度数值类型从一开头设计的时候,就不是一个精确?????的数值类型,他只保证在他这个数值类型的精度之内是精确?????的,精度之外则不保证,比方说,一个数值5.1,很可能存储在单精度/双精度数值中的实际值是5.100000000001或者5.09999999999999。导致这个现象的缘由我们可以通过两种方式来解释: 简洁的解释方法: 你可以尝试在任何一个控件的属性面板中,设定他的宽度为:3.2CM,当你输入完毕后,你会发觉值自动变成了3.199cm,无论你怎么改,你都无法输入3.200CM,由于实际上在电脑中存储的并不是CM为单位的数值,而是“缇”为单位的数值,而“缇”和CM之间的比值,是个很难被除尽的数,因此你输入完毕后,电脑自动转换成了最接近的“缇”值,然后再转换成厘米显示到属性面板上,这一乘一除,两次四舍五入,误差就出来了。单精度/双精度也是类似的原理,其实在二进制存储的时候,单精度/双精度都采纳了类似相近分数的方法,而这样的存储是不行能做到精确?????的。 深化的解释方法: 让我们来看看我们存储到数字介质中的单精度/双精度值究竟是怎么样的,我们使用如下代码对单精度类型进行一个解剖: Public Declare Sub CopyMemory Lib “kernel32” Alias “RtlMoveMemory” (Des(TI)naTIon As Any, Source As Any, ByVal Length As Long) Public Sub float(Te)st() Dim dblVar As Single dblVar = 5.731 / 8 dblOutput dblVar dblVar = dblVar * 2 dblOutput dblVar dblVar = dblVar * 2 dblOutput dblVar dblVar = dblVar * 2 dblOutput dblVar dblVar = dblVar * 2 dblOutput dblVar dblVar = dblVar * 2 dblOutput dblVar End Sub Public Sub dblOutput(ByVal dblVar As Single
您可能关注的文档
最近下载
- 江苏省天一中学2024-2025学年高二上学期期末考试地理试题.docx VIP
- 2025至2030中国表面增强拉曼光谱(SERS)基底行业市场占有率及有效策略与实施路径评估报告.docx VIP
- 资产评估工作底稿及编制.docx VIP
- 陕西省2025-2026年初中语文毕业学业考试模拟试题.pdf VIP
- 河南省南阳市唐河县2022-2023学年九年级上学期期末物理试题(含答案.pdf VIP
- MES系统用户验收测试案例.doc VIP
- 2023新版广州五年级英语下册单词默写表.doc VIP
- 实习单位接收函模板.pdf VIP
- 碳中和概论 配套课件.ppt
- 1-我哪儿都没去过.pptx VIP
原创力文档

文档评论(0)