这一页讲的什么意思呀 有点不同单双精度如何运用的 c语言

作者&投稿:仲孙刘 (若有异议请与网页底部的电邮联系)
计算机C语言的单双精度是什么啊,怎么区别啊?~

比如,11.234567这个就是单精度,单精度有效位数是前七位,当然不包括小数点,但是小数点后面默认保留6位小数,如果不够6位用0填充。
12.23456789446547这个就是双精度,双精度默认保留14位小数。
双精度比单精度表示浮点型(也就是小数)更精确一些,比如在需要高精度数据的地方就可以用双精度。其它的前面都说了 都很对。

你说的是memcpy吧
void *memcpy ( void * destination, const void * source, size_t num );

第一个参数是目的地的指针,第二个参数是想要被copy的数据的指针,第三个是有多少byte要copy。返回值和目的地指针一样。
要注意目的地指针必须是分配好的空间

单精度和双精度数值类型最早出现在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" (Destination As Any, Source As Any, ByVal Length As Long)

Public Sub floatTest()
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)
Dim bytVar(3) As Byte
Dim i As Integer, j As Integer
Dim strVar As String

CopyMemory ByVal VarPtr(bytVar(0)), ByVal VarPtr(dblVar), 4
strVar = dblVar & ": "
For i = 3 To 0 Step -1
For j = 7 To 0 Step -1
strVar = strVar & (bytVar(i) And 2 ^ j) / 2 ^ j
Next j
strVar = strVar & " "
Next i
Debug.Print strVar

End Sub
运行后我们得到输出结果(输出格式为高位左,低位右):

.716375: 00111111 00110111 01100100 01011010
1.43275: 00111111 10110111 01100100 01011010
2.8655: 01000000 00110111 01100100 01011010
5.731: 01000000 10110111 01100100 01011010
11.462: 01000001 00110111 01100100 01011010
22.924: 01000001 10110111 01100100 01011010
这里,我们把单精度类型转化成了二进制数据输出,这里我们看到,虽然这六个数字完全不同,但是他们的二进制存储惊人地相似,我们看到红色标记部分,每次都是加1,事实上,单精度数据类型使用从高位开始第1位作为正负标记位(绿色),第2位到第9位,是一个跨字节的有符号字节类型数据,这个数值决定了小数点移动的方向和位数(红色),第10位到32位保存一个整数(蓝色)在存储过程中,电脑首先把输入的值不断移位(乘除2)直到这个数的整数部分占用了全部24位的整数位,然后把移动的位数写入浮点部分(红色),而移位后的结果写入整数部分(蓝色和绿色),小数部分则舍弃。求值的时候则是反向过程,先根据正负位和整数位求值,然后根据红色部分的整数来进行移位(乘除2的次方),最终才是我们得到的单精度数值。双精度数值也是同样原理,只是位数更多而已。

通过解剖单精度数值的二进制存储格式,我们可以清楚看到,实际上单精度/双精度的存储,都要通过乘法和除法,其中必有舍入,如果恰好你的数值在除法中被舍入了,那么你赋的初值就很可能与你最终存储的值不完全相同,其中的微小差异,并不与单精度/双精度的设计目标相违背。

当我们在数据库中或者VBA代码中使用一个单精度/双精度数值的时候,也许你从界面上看不到区别,但是在实际的存储中,这个差别却真真切切地就在那里,当你对其进行相等比较的时候,系统只是简单地作二进制的比较,界面上无法体现的微小差异,在二进制比较面前却无处遁形,于是,你的等于比较返回了一个意料之外的False。


平凡的世界后一百页讲述了什么?
讲述了少平通过自己的努力而过上了好的生活,但是最终秀莲却死了,少安一个人在外漂泊最终实现了自己的理想,成了一个作家,黄原的人民在田福堂的带领下不断改善了当地的生活条件

一千零一页的内容是什么?
国王为了第二天夜里听故事就没有杀她,就这样天天晚上讲故事一直讲了一千零一个,国王也改变了对女人的看法和新王后白头到老。《天方夜谭》里的一千零一个故事就是王后讲的一千零个故事,像我们熟悉的《阿拉丁和神灯》、《阿里巴巴和四十大盗》、《辛伯达航海记》等都是其中的名篇。

谁能帮我讲解一下这一页所例举的和弦声部进行原则呀?
以key=C、4\/4拍下、旋律音为 5 6 7 1、每个音各占一拍为例。这是一小节。5和7是重拍,6和1是轻拍。那么编配和弦时可以在5和7的地方(或只在5的地方)加插和弦。5的地方使用一级和弦、7的地方使用五级的第三转位和弦。那么大体上听到的是:C G\/D 5 6 7 1 3 5 1 2 假如是这样编...

童年16页一31页主要写了什么?
我从没见过这种阵势,有一种莫名奇妙的惧怕.我不明白姥姥反复对我说的话是什么意思:“快,和爸爸告别吧,孩子,他还不到年纪,可是他要死了,你再也别想见到他了,亲爱的……”我一向信服我姥姥说的每一句话. 尽管现在她穿一身黑衣服,显得脑袋和眼睛都特别的大,挺奇怪,也怪好玩.我小时候,得过一场大病,父亲看护...

请问一下、日记本的第一页写一些什么呢、最好是回忆类文字、
蓝天下的成长,夜空中的梦想又如在沙滩上堆积起一座座小小的城堡,堆积起在蓝色海边的梦;儿是总是喜欢在榕树下玩耍,又喜欢在那静静地坐着,听着老人讲那古老的故事,那时的梦是绿色的;儿时总是喜欢在老家门前坐着,在落叶的秋天里欣赏那一片片穿着金色的叶子在漫天飞舞, 那时的梦是金黄色的。儿时...

...一页写着:美术里讲"留白",所以我不写满,等你"折枝"。什么意思...
剩下的要你来填补,也就是说,我心里的空白需要你来填补,我需要你。

一页纸脑图《刘擎西方现代思想40讲》合集
一页纸脑图《刘擎西方现代思想40讲》合集  我来答 1个回答 #热议# 哪些癌症可能会遗传给下一代?会哭的礼物17 2022-07-14 · TA获得超过1027个赞 知道答主 回答量:0 采纳率:100% 帮助的人:0 我也去答题访问个人页 关注 展开全部 水中的鱼也会漫溯回游,作为清醒的现代人,更应具备自觉...

开题答辩老师会让你快速讲下一页是好还是坏
开题答辩老师会让你快速讲下一页是坏。快速意味着答辩的无关内容太多。答辩时间是固定的,讲太慢不合适,会提醒考生加快速度。或者老师认为这不是重要内容,无需在此辩述,也会迅速略过。

...是一个幻灯片来的,最后一页是很吓人的披着散发的女人头!
第二天,人们发现小章死在了厕所里,他被一根白布掉在厕所的屋脊上!!阿名来到教室的时候,他看到他的座位上,放着一卷白色的卫生纸 ,第二年,那个教室又被封锁了,然而阿名早在教室封锁之前,就转到了别的学校,现在他在东北的一家化工厂工作,有一年我去他家探亲,他给我讲起这个故事,他说其实很多事都...

推荐几个像《一页台北》一样悠扬、讲小人物的电影
练习曲 九降风 最遥远的距离 第36个故事 爱到底 对不起,我爱你 爸…你好吗 六号出口 盛夏光年 蓝色大门 霓虹心 五月之恋 指尖的重量 夏天的尾巴 沉睡的青春 2分20秒 这些都是我看过的 感觉不错 很喜欢台湾电影里面安静的小情调~

昭通市13351359992: word文档如何设置单双页不同的背景,请高手指路 -
墨扶甘乐: 复制粘贴就可以了

昭通市13351359992: 请教有经验的班主任,三年级的孩子有什么与一、二年级不同的特点呢?如何的对学生进行班级管理.? -
墨扶甘乐: 孩子进入三年级,一切一切都有较大变化.小学六年一般可分为三个阶段:一、二年级为低段;三、四年级为中段;五、六...

昭通市13351359992: 狼王梦第一章从几页到几页?讲的什么? -
墨扶甘乐: 从第7页到第30页讲了母狼紫岚怀孕了他为自己怎样养育后代而烦恼,在与狗的战斗中她生下了一母四公(狼崽)可是洪水来了她失去了一只小公狼.

昭通市13351359992: 一炉香透九重天,道气兴隆表意虔,最喜祖玄俱有庆是什么意思 -
墨扶甘乐: 、一炉香透九重天 道气兴隆表意虔 最喜祖玄俱有庆 忽然尘俗诞真...说的是你祖上积德,生性好道,所以你是仙人下凡二、上海城隍庙人生赠言怎么解哦~~~一炉香透九重天,道气兴隆表意...应该带解释的吧.多给点钱啊.我们这里都这样的.下...

昭通市13351359992: 《朝花夕拾》中狗.猫.鼠那一章主要讲了一件什么事情 -
墨扶甘乐:在《狗·猫·鼠》这篇文章里,鲁迅先生清算猫的罪行:第一,猫对自己捉到的猎物,总是尽情玩弄够了,才吃下去;第二,它与狮虎同族,却天生一副媚态;第三,它老在交配时嗥叫,令人心烦;第四,它吃了我小时候心爱的一只小隐鼠....

昭通市13351359992: 风腾的单双页码是什么意思 -
墨扶甘乐: 文件--页面设置--版式--页眉和页脚--选中\\“奇偶页不同”,然后分别设置单双页即可.

昭通市13351359992: 业余自学该如何读教材 -
墨扶甘乐: 在业余自学中,我们经常可以看到这样一些情况:有的同志对教材随便翻翻,或是读哪儿算哪儿,或是走马观花,浮光掠影;有的同志将课本丢置一旁,只看 辅导资料、复习提要;有的同志课本看得也挺认真,可成效却不明显.那么,业余自学...

昭通市13351359992: 一本故事书从第一页到最后一页共用了1989个数码字,这里所讲的数码字是什么意思 -
墨扶甘乐: 比如 第1页“1”是1个数码字;第11页的“11”就是用了2个数码字;第111页的“111”是用了3个数码字……以此类推 ,这本书一共有699页

昭通市13351359992: 请教中医诊断心法书中的一段话如何解释?作者程绍恩:第124页:当
墨扶甘乐: 放在这里有些时间了,还是没人回答,那么我就来试试吧. 病证发展到一个特别的情... 为什么补阴的感觉并不那么好? 久有元阴虚亏者,体质与新亏者已不同.其被阴过程...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网