日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VB/VBA的浮点数结构

發(fā)布時(shí)間:2023/12/10 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VB/VBA的浮点数结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?前言

在前篇《VB的整數(shù),你真的了解?》中,向讀者介紹整數(shù)時(shí)提到,計(jì)算機(jī)里實(shí)際上只有整數(shù)一種類型。那浮點(diǎn)數(shù)是如何表示的呢?浮點(diǎn)數(shù)的使用性能是不是比真正的整數(shù)要差呢?VB在應(yīng)用過程中要注意哪些事項(xiàng)呢?本篇將詳細(xì)分析,來看看吧。

一、淺談浮點(diǎn)數(shù)

人類在進(jìn)化過程中,發(fā)明了很多種度量單位,來量化我們所處的世界。但在客觀世界里,沒有那么多剛剛好的事。比如銀行存款余額,時(shí)間,導(dǎo)彈射程,戰(zhàn)艦位置等,人類也不可能無限細(xì)分度量單位。好比在計(jì)算機(jī)世界里,我們不能給每個(gè)內(nèi)存單元(字節(jié))都取一個(gè)名字,只能給有意義的內(nèi)存冠名(變量)。

這時(shí)浮點(diǎn)數(shù)就顯得異常重要了,代表著人類對(duì)客觀世界的把控程度。這種把控充滿了主觀色彩,可以用”在乎”一詞來形容浮點(diǎn)數(shù)對(duì)人的意義。首先,在不同背景下,需要不同的精度。比如我們很少在意金錢數(shù)據(jù)角分之后的數(shù)據(jù),但是在高能物理界可能需要小數(shù)點(diǎn)后N個(gè)數(shù)位,否則差之毫厘失之千里。其次,精度的轉(zhuǎn)換又常常在不經(jīng)意間發(fā)生。比如朋友來了有好酒,我們出手闊綽,毫不計(jì)較。但敵人來了有獵槍,一個(gè)子兒也不會(huì)多給。

雖然,計(jì)算機(jī)只認(rèn)整數(shù),但是我們?nèi)烁嗟厥钦J(rèn)小數(shù)(也即浮點(diǎn)數(shù)或?qū)崝?shù))的,因?yàn)樾?shù)才有現(xiàn)實(shí)意義。超算和比特幣礦機(jī),想必大家有所耳聞,他們都偏重計(jì)算,講究的是算力。如果說比特幣礦機(jī)有點(diǎn)不務(wù)正業(yè),那超算是正兒八經(jīng)的為科學(xué)研究服務(wù)吧。很多高精尖領(lǐng)域的研究,都離不開超算。但是衡量超算能力最核心的指標(biāo)之一,就是浮點(diǎn)運(yùn)算能力。

最近幣市火爆,筆者也有談到比特幣,有朋友問礦機(jī)為何要裝顯卡?其實(shí),就跟浮點(diǎn)數(shù)運(yùn)算有關(guān)啦。我們知道顯卡專注于提升圖像圖形的處理能力,而圖形的處理就涉及到精度的問題,也就是浮點(diǎn)數(shù)的處理嘍。而比特幣挖礦在非對(duì)稱加解密、哈希等計(jì)算中要涉及浮點(diǎn)數(shù)的,所以給礦機(jī)加顯卡,是可以提高算力的。

二、VB的浮點(diǎn)數(shù)結(jié)構(gòu)

1、Single類型

占4字節(jié),6位有效小數(shù)。由1Bit符號(hào)位、8Bits指數(shù)位和23Bits有效數(shù)位三部分組成。其結(jié)構(gòu)如下:

那Single又是如何轉(zhuǎn)換為整數(shù)的呢?按照IEEE(美國電氣和電子工程師學(xué)會(huì))的標(biāo)準(zhǔn),按照以下公式進(jìn)行轉(zhuǎn)換:

l= (-1)^s * (1 + f) * 2^(e - 127)

其中:l為十進(jìn)制整數(shù),s為第32bit位的符號(hào)(0為正數(shù),1為負(fù)數(shù)),f為有效小數(shù),e為冪指數(shù)。

看上去很復(fù)雜,其實(shí)在VB里非常簡單,將Single變量的內(nèi)存數(shù)據(jù),直接拷貝到Long類型變量的內(nèi)存里,就完成了轉(zhuǎn)換。

2、Double類型

占8字節(jié),15位有效小數(shù)。由1Bit符號(hào)位、11Bits指數(shù)位和52Bits有效數(shù)位三部分組成,結(jié)構(gòu)與Single類似。與十進(jìn)制轉(zhuǎn)換公式為:l= (-1)^s * (1 + f) * 2^(e - 1023)。

在VB中,需要借助Currency類型,來實(shí)現(xiàn)轉(zhuǎn)換。

3、Date類型

占8字節(jié),是VB的日期格式。DATE在WTYPES.H中定義為"typedef double DATE;",所以Date就是Double類型。值得一提的是,其整數(shù)部分為年月日,小數(shù)部分為時(shí)分秒,可以手工實(shí)現(xiàn)高精度時(shí)間哦。

三、VB浮點(diǎn)數(shù)使用過程中要注意哪些?

按浮點(diǎn)數(shù)的結(jié)構(gòu),我們可知浮點(diǎn)數(shù)在計(jì)算機(jī)中,并不等于數(shù)學(xué)意義上的實(shí)數(shù),而是存在人為舍位的近似值。因此時(shí)時(shí)刻刻牢記精度問題,是正確使用浮點(diǎn)數(shù)的前提。

1、浮點(diǎn)數(shù)與10進(jìn)制整數(shù)相互轉(zhuǎn)換時(shí),存在精度問題。

2、浮點(diǎn)數(shù)謹(jǐn)慎用于相等判斷。

3、VB對(duì)小數(shù)常數(shù)、除法結(jié)果等默認(rèn)為Double類型,在計(jì)算中只要有小數(shù),都會(huì)做Double類型轉(zhuǎn)換,會(huì)降低代碼性能。在X86的32位機(jī)器下,CPU處理Single的速度更快,若精度允許,應(yīng)盡量使用該類型,否則應(yīng)統(tǒng)一使用Double類型。

4、VB中若需要更高精度的浮點(diǎn)數(shù),則需借助Decimal類型,該類型支持28位有效小數(shù)位,但性能也更低。

歡迎關(guān)注BtOfficer及各大自媒體平臺(tái)同名賬號(hào),筆者研發(fā)的安全生產(chǎn)框架,專為非IT人士服務(wù),集成海量實(shí)用工具,更提供功能齊全的編程接口,重要的是可完美兼容VB家族語言,是非IT潛心于業(yè)務(wù)生產(chǎn)的利器。關(guān)注“BtOfficer”公眾號(hào),即可獲取深入淺出的開發(fā)幫助,系統(tǒng)的底層知識(shí),答疑等福利,還有行業(yè)情報(bào),產(chǎn)品經(jīng)銷資格等您來拿哦。

?

總結(jié)

以上是生活随笔為你收集整理的VB/VBA的浮点数结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。