專利名稱:一種有效數(shù)字運(yùn)算結(jié)果的有效位數(shù)智能選取及表示方法
技術(shù)領(lǐng)域:
本發(fā)明涉及物理實(shí)驗(yàn)領(lǐng)域,尤其是一種物理實(shí)驗(yàn)中有效數(shù)字運(yùn)算結(jié)果的有效位數(shù)選取及表示方法。
背景技術(shù):
物理實(shí)驗(yàn)數(shù)據(jù)運(yùn)算結(jié)果的有效數(shù)字位數(shù)的取舍是物理實(shí)驗(yàn)數(shù)據(jù)處理中的一個(gè)重要環(huán)節(jié)。目前,物理實(shí)驗(yàn)數(shù)據(jù)運(yùn)算結(jié)果的有效位數(shù)的選取方法通常采用的是人工選取的方式,即人為手動(dòng)選取,或者在計(jì)算機(jī)數(shù)據(jù)處理系統(tǒng)中人為設(shè)定運(yùn)算結(jié)果位數(shù)(在程序中嵌入或在系統(tǒng)界面上輸入),由計(jì)算機(jī)根據(jù)這個(gè)位數(shù)和四舍六入五配偶的規(guī)則(如高級(jí)語(yǔ)言中的有效數(shù)字位數(shù)取舍函數(shù),該函數(shù)中的位數(shù)參量需要人為設(shè)定)自動(dòng)選取運(yùn)算結(jié)果的有效數(shù)字位數(shù)。若運(yùn)算的有效數(shù)字位數(shù)有變化,則運(yùn)算結(jié)果的有效數(shù)字位數(shù)就有相應(yīng)的變化,這樣,就需要有不同的人為設(shè)定。一個(gè)物理實(shí)驗(yàn)項(xiàng)目通常有多項(xiàng)數(shù)據(jù)處理內(nèi)容,且各處理結(jié)果的有效位數(shù)不一定相同,則就要有多個(gè)不同的人為設(shè)定。無(wú)論是將這種設(shè)定放在程序當(dāng)中還是從界面輸入,這種設(shè)定都可能會(huì)受到人為因素的影響而與輸入的運(yùn)算數(shù)據(jù)位數(shù)以及運(yùn)算類型可能不相對(duì)應(yīng),同時(shí)這種設(shè)定還增加了人為的負(fù)擔(dān)。這種人為選取方式不利于大量的、位數(shù)隨機(jī)的物理實(shí)驗(yàn)數(shù)據(jù)的精確而高效地處理,不利于物理實(shí)驗(yàn)數(shù)據(jù)智能處理平臺(tái)的開(kāi)發(fā)。
發(fā)明內(nèi)容
為了克服已有的物理實(shí)驗(yàn)中的有效數(shù)字運(yùn)算結(jié)果的有效位數(shù)采用人工選取方式、不利于處理海量數(shù)據(jù)、位數(shù)隨機(jī)場(chǎng)合、適用性較差的不足,本發(fā)明提供一種采用智能選取、有效適用處理海量數(shù)據(jù)、位數(shù)隨機(jī)場(chǎng)合、適用性良好的有效數(shù)字運(yùn)算結(jié)果的有效位數(shù)智能選取及表示方法。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是有效數(shù)字運(yùn)算結(jié)果的有效位數(shù)智能選取及表示方法,所述選取方法包括以下步驟(I)從左至右搜索數(shù)值運(yùn)算式字符串中的每一個(gè)字符,若字符不為“ +
八”,則該字符為運(yùn)算數(shù)據(jù)中的一個(gè)數(shù)字或小數(shù)點(diǎn)或三角函數(shù)、對(duì)數(shù)運(yùn)算符中的一個(gè)
字符;(2)以字符“ +為斷點(diǎn)搜索提取運(yùn)算式中的每一個(gè)數(shù)據(jù)或三角函數(shù)表示式或?qū)?shù)表示式;當(dāng)搜索的字符為“ + ”或時(shí),則檢查其前一位相鄰的字符,若前一位字符為“E”,說(shuō)明數(shù)據(jù)為科學(xué)記數(shù)法表示,則繼續(xù)往后搜索;若不為“E”,則“ + ”或
處就為數(shù)據(jù)提取的斷點(diǎn),提取每一個(gè)加減項(xiàng);(3)再以為斷點(diǎn)提取每一個(gè)加減項(xiàng)中的乘除項(xiàng),以為斷點(diǎn)提取乘除項(xiàng)中的冪底數(shù)據(jù)或冪底三角函數(shù)表示式或冪底對(duì)數(shù)表示式,對(duì)于科學(xué)記數(shù)法的冪底數(shù)據(jù)的識(shí)別方法同(2)。以三角函數(shù)運(yùn)算符和對(duì)數(shù)運(yùn)算符搜索識(shí)別三角函數(shù)表示式和對(duì)數(shù)表示式,若三角函數(shù)表示式和對(duì)數(shù)表示式存在,則進(jìn)行三角函數(shù)運(yùn)算和對(duì)數(shù)運(yùn)算,計(jì)數(shù)它們運(yùn)算結(jié)果的有效位數(shù),將這些有效數(shù)字代替并放置在三角函數(shù)表示式或?qū)?shù)表示式的位置處成為算術(shù)運(yùn)算的數(shù)據(jù);(4)對(duì)于乘除運(yùn)算數(shù)據(jù)、冪中的底數(shù)數(shù)據(jù),計(jì)算各數(shù)據(jù)的有效數(shù)字個(gè)數(shù)IV記下其中最小的個(gè)數(shù)min Inj,則這些數(shù)據(jù)的乘除冪運(yùn)算結(jié)果的有效數(shù)字的個(gè)數(shù)就為。對(duì)這些數(shù)據(jù)進(jìn)行乘除冪運(yùn)算,將運(yùn)算結(jié)果用科學(xué)記數(shù)法表示,根據(jù)mining來(lái)決定運(yùn)算結(jié)果的有效位數(shù),根據(jù)四舍六入五配偶的修約規(guī)則來(lái)決定該運(yùn)算結(jié)果有效數(shù)字的取值。將該值代替并放置在該乘除冪運(yùn)算項(xiàng)的位置處,組成新的只含有加減運(yùn)算的數(shù)值運(yùn)算式;(5)通過(guò)數(shù)據(jù)表示形式的轉(zhuǎn)換,統(tǒng)一各加減數(shù)據(jù)中科學(xué)記數(shù)法的指數(shù)表示形式,并提取出該指數(shù)形式。計(jì)算該加減運(yùn)算式中的每一個(gè)數(shù)據(jù)的誤差位Hli,記下其中最高的誤差位max ImJ ,則運(yùn)算結(jié)果的誤差位就為max {mj。對(duì)這些數(shù)據(jù)進(jìn)行加減運(yùn)算,根據(jù)max ImJ來(lái)決定運(yùn)算結(jié)果中位數(shù)最高的誤差位,根據(jù)四舍六入五配偶的修約規(guī)則來(lái)決定該運(yùn)算結(jié)果有效數(shù)字的取值。本發(fā)明的有益效果主要表現(xiàn)在采用智能選取、有效適用處理海量數(shù)據(jù)、位數(shù)隨機(jī)場(chǎng)合、適用性良好。
圖I是加減項(xiàng)提取的算法流程圖。圖2是乘除項(xiàng)提取的算法流程圖。圖3是幕底項(xiàng)提取的算法流程圖。圖4是三角函數(shù)、對(duì)數(shù)的識(shí)別及其運(yùn)算數(shù)據(jù)提取的算法流程圖。圖5是小時(shí)、度、分、秒的提取算法流程圖。圖6是數(shù)據(jù)的科學(xué)記數(shù)法表示算法流程圖。圖7是有效數(shù)字的運(yùn)算及其運(yùn)算結(jié)果有效位數(shù)的選取流程圖。圖8是有效數(shù)字運(yùn)算式的輸入及運(yùn)算結(jié)果的顯示的示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)DI 圖8,物理實(shí)驗(yàn)數(shù)據(jù)運(yùn)算結(jié)果的有效位數(shù)與運(yùn)算數(shù)據(jù)的有效位數(shù)以及運(yùn)算類型有關(guān),運(yùn)算結(jié)果的有效數(shù)字位數(shù)確定后,此有效數(shù)字的末位且只有末位才是可疑位或誤差位,該可疑位的取值要由四舍六入五配偶的修約規(guī)則來(lái)決定。(I)力口、減運(yùn)算
力卩、減運(yùn)算結(jié)果的末位與加、減運(yùn)算數(shù)據(jù)中最先出現(xiàn)的(位數(shù)最高的)可疑位相同,如213. 26+16. 8 ^ 230. I。其中運(yùn)算數(shù)據(jù)“213. 26”的可疑位是小數(shù)點(diǎn)后第2位,而“16. 8”的可疑位在小數(shù)點(diǎn)后的第I位上而高于小數(shù)點(diǎn)后的第2位。因此,運(yùn)算結(jié)果的可疑位就在小數(shù)點(diǎn)后的第I位上,通過(guò)進(jìn)位則得結(jié)果為230. I。(2)乘、除、幕運(yùn)算乘、除運(yùn)算結(jié)果的有效數(shù)字位數(shù)與乘、除運(yùn)算數(shù)據(jù)中有效數(shù)字位數(shù)最少的相同,如325. 78*0. 0145/789. 2 ^ 0. 00599。其中運(yùn)算數(shù)據(jù)“0. 0145”的有效數(shù)字位數(shù)最少,為3位,則運(yùn)算結(jié)果的有效數(shù)字位數(shù)就為3位,通過(guò)進(jìn)位得運(yùn)算結(jié)果為“0. 00599”。冪運(yùn)算結(jié)果的有效數(shù)字位數(shù)與冪底數(shù)據(jù)的有效數(shù)字位數(shù)相同,如5. 24~2 ^ 27. 5。其中冪底數(shù)據(jù)“5. 24”的有效數(shù)字位數(shù)為3位,則運(yùn)算結(jié)果的有效位數(shù)就為3位,通過(guò)進(jìn)位得運(yùn)算結(jié)果為“27. 5”。(3)三角、對(duì)數(shù)運(yùn)算三角、對(duì)數(shù)運(yùn)算結(jié)果的有效數(shù)字位數(shù)由運(yùn)算對(duì)象的三角函數(shù)值、對(duì)數(shù)值與該運(yùn)算對(duì)象增加I個(gè)單位后的三角函數(shù)值、對(duì)數(shù)值相比較來(lái)確定。如x = 43° 26' , sin x =0. 6875100985,當(dāng) x 增加 I 個(gè)單位后,即 x = 43。21',則有 sin x = 0. 6877213051,可看出,兩個(gè)運(yùn)算結(jié)果的小數(shù)點(diǎn)后第4位就開(kāi)始有變化了,則小數(shù)點(diǎn)后第4位就為誤差位,因此,運(yùn)算結(jié)果就取到小數(shù)點(diǎn)后第4位處,即sin 43° 26' ^ 0. 6875。(4)四舍六入五配偶的誤差位修約規(guī)則要舍去的數(shù)字中的最高位數(shù)若為1、2、3、4時(shí),則舍去這些數(shù)字,若為6、7、8、9時(shí),在舍去這些數(shù)字的同時(shí)進(jìn)I。如將下列數(shù)據(jù)保留三位小數(shù)時(shí),有2. 14346 ^ 2. 143,2. 14372 ^ 2. 144要舍去的數(shù)字中的最高位數(shù)若為5,而5后面又有不為零的數(shù)字時(shí),則舍去這些數(shù)字并進(jìn)I。若5后面無(wú)數(shù)字,或雖有數(shù)字但都為數(shù)字0時(shí),進(jìn)或舍就取決于要保留的最后一位數(shù)的奇偶性。若要保留的最后一位數(shù)是偶數(shù),則舍去5后面的所有數(shù)字,若要保留的最后一位數(shù)是奇數(shù),則舍去5后面的所有數(shù)字的同時(shí)進(jìn)I。如將下列數(shù)據(jù)保留三位小數(shù)時(shí),有2. 1435 ^ 2. 144,2. 14450 ^ 2. 144,2. 144501 ^ 2. 145以上就是物理實(shí)驗(yàn)數(shù)據(jù)運(yùn)算結(jié)果的有效位數(shù)選取原則,此原則是計(jì)算機(jī)智能選取物理實(shí)驗(yàn)數(shù)據(jù)運(yùn)算結(jié)果有效位數(shù)的依據(jù)。方法是采用計(jì)算機(jī)識(shí)別有效數(shù)字運(yùn)算式中各個(gè)運(yùn)算數(shù)據(jù)的有效位數(shù)和各個(gè)運(yùn)算類型,根據(jù)加、減、乘、除、三角、對(duì)數(shù)運(yùn)算結(jié)果的有效位數(shù)選取原則和四舍六入五配偶的誤差位修約原則,對(duì)物理實(shí)驗(yàn)數(shù)據(jù)運(yùn)算結(jié)果的有效位數(shù)進(jìn)行計(jì)算機(jī)智能選取。本實(shí)施例的有效位數(shù)智能選取及表示方法包括運(yùn)算數(shù)據(jù)有效位數(shù)的計(jì)數(shù)算法、數(shù)據(jù)運(yùn)算式中數(shù)據(jù)和運(yùn)算符的識(shí)別算法、基于運(yùn)算優(yōu)先級(jí)的數(shù)字運(yùn)算算法、位數(shù)隨機(jī)的運(yùn)算結(jié)果數(shù)據(jù)的科學(xué)記數(shù)法的智能表示算法,根據(jù)運(yùn)算數(shù)據(jù)有效位數(shù)和運(yùn)算類型來(lái)選取運(yùn)算結(jié)果有效位數(shù)的位數(shù)智能選取算法。有效數(shù)字運(yùn)算式的計(jì)算機(jī)表示形式由于計(jì)算機(jī)只能存儲(chǔ)文本格式的運(yùn)算式,因此,無(wú)論怎樣的運(yùn)算式輸入模式,計(jì)算機(jī)最終獲得的運(yùn)算式都只能是一個(gè)文本形式的字符串(它是計(jì)算機(jī)高級(jí)語(yǔ)言系統(tǒng)所能接收的形式,非文本的輸入必須轉(zhuǎn)換成文本的形式來(lái)給計(jì)算機(jī)高級(jí)語(yǔ)言系統(tǒng)接收),參照文獻(xiàn)[I]:陳慶章.Visual Basic程序設(shè)計(jì)基礎(chǔ)[M].杭州浙江科學(xué)技術(shù)出版社,2007。文本字符串形式的運(yùn)算式如下所示6. 875*567. 3/8. 9~2+67. 4359/456-4. 32~3_46*6. 5+2*sin ( n /3) -log (4. 765)其中,““ “ “ “ ~ “ sin ”、“ cos ”、“ tan ”、“ Iog’’ 分別表示力口、減、乘、除、冪、正弦、余弦、正切、自然對(duì)數(shù)等運(yùn)算符。計(jì)算機(jī)高級(jí)語(yǔ)言系統(tǒng)中的三角函數(shù)一般只有“sin”、“COs”、“tan”,因此,其它形式的三角函數(shù)都需轉(zhuǎn)換成“sin”、“COs”、“tan”的形式來(lái)輸入或輸入后再轉(zhuǎn)換成“sin”、“cos”、“tan”的表示形式,同樣,其它形式的對(duì)數(shù)也都要轉(zhuǎn)換成“l(fā)og”的形式來(lái)給計(jì)算機(jī)運(yùn)算。三角函數(shù)和對(duì)數(shù)以函數(shù)的形式出現(xiàn),即在這些運(yùn)算符后面用括號(hào)將操作對(duì)象括起來(lái),如sin()、IogO。角度用弧度來(lái)表示。 有效數(shù)字運(yùn)算式的計(jì)算機(jī)輸入為便于直接使用計(jì)算機(jī)高級(jí)語(yǔ)言系統(tǒng)中的運(yùn)算功能,盡量采用與計(jì)算機(jī)高級(jí)語(yǔ)言系統(tǒng)所能接收的文本格式來(lái)向計(jì)算機(jī)輸入運(yùn)算表達(dá)式則可簡(jiǎn)化表達(dá)式的轉(zhuǎn)化工序,這還可方便計(jì)算機(jī)對(duì)該運(yùn)算式的后序操作。同時(shí),輸入的數(shù)據(jù)形式還要能反映出數(shù)據(jù)的有效位數(shù),因?yàn)椋瑪?shù)據(jù)的有效位數(shù)反映了物理實(shí)驗(yàn)儀器的測(cè)量精度。對(duì)直接測(cè)量量,如長(zhǎng)度、溫度、重量等十進(jìn)制的測(cè)量量,其數(shù)值的表示形式與文本形式相同。而時(shí)間、角度等六十進(jìn)制的測(cè)量量,其數(shù)值的表示形式與文本形式是有差別的,如78° 23'的文本形式只能用弧度來(lái)表示時(shí)方可被計(jì)算機(jī)高級(jí)語(yǔ)言系統(tǒng)接收并運(yùn)算。78° 23'的誤差位顯而易見(jiàn)是在“分”上,若要用弧度78* /180+23* / (180*60)來(lái)反映誤差位就顯得不直接了,同時(shí)增加了計(jì)算機(jī)對(duì)其識(shí)別的難度。若將其運(yùn)算成一個(gè)數(shù)值后再來(lái)判別角度的誤差位則根本判別不出來(lái)。因此,為便于數(shù)據(jù)誤差位的精確判別,采用與原始數(shù)據(jù)表示形式相同的形式來(lái)輸入原始數(shù)據(jù)。(I)十進(jìn)制數(shù)的輸入十進(jìn)制的物理實(shí)驗(yàn)數(shù)據(jù)的末位就是誤差位,其表示形式就是文本形式,可直接用計(jì)算機(jī)鍵盤將這種數(shù)據(jù)輸入至計(jì)算機(jī)中。如4. 6754。(2)時(shí)間的輸入時(shí)間的輸入形式為8:3' 45"。其中數(shù)字和小時(shí)字符“”用計(jì)算機(jī)鍵盤來(lái)直接輸入,分字符“'”、秒字符“"”可采用智能ABC輸入法來(lái)輸入,因?yàn)樵谌魏蜽indows系統(tǒng)中,智能ABC輸入法都是其默認(rèn)的漢字輸入法。(3)角度的輸入角度的輸入形式為345° 15'。其中數(shù)字用計(jì)算機(jī)鍵盤直接輸入,度字符“?!保肿址?”采用智能ABC輸入法來(lái)輸入。(4)運(yùn)算符的輸入物理實(shí)驗(yàn)數(shù)據(jù)處理中的運(yùn)算通常為加、減、乘、除、冪、正弦、余弦、正切、自然對(duì)數(shù)等運(yùn)算,相應(yīng)的運(yùn)算符為“ + ”、“-”、“*”、“/”、“~”、“sin”、“C0S”、“tan”、“l(fā)0g”,這些運(yùn)算符
可全部采用計(jì)算機(jī)鍵盤來(lái)直接輸入。數(shù)據(jù)、算術(shù)運(yùn)算符、三角函數(shù)、對(duì)數(shù)的識(shí)別與提取一算法I :當(dāng)計(jì)算機(jī)獲得了有效數(shù)字運(yùn)算式后,首先要做的就是識(shí)別出運(yùn)算式中的運(yùn)算數(shù)據(jù)和運(yùn)算符,以便計(jì)數(shù)運(yùn)算數(shù)據(jù)的有效位數(shù)和推導(dǎo)出運(yùn)算結(jié)果的有效位數(shù),識(shí)別采用掃描搜索的方式進(jìn)行,即從運(yùn)算式的最前面掃描搜索至運(yùn)算式的最后面,通過(guò)識(shí)別的方法來(lái)提取出運(yùn)算式中的所有數(shù)據(jù)和運(yùn)算符。方法是以算術(shù)運(yùn)算符為斷點(diǎn)來(lái)提取算術(shù)運(yùn)算數(shù)據(jù)、三角函數(shù)表達(dá)式和對(duì)數(shù)表達(dá)式,用三角函數(shù)運(yùn)算符和對(duì)數(shù)運(yùn)算符來(lái)識(shí)別三角函數(shù)表達(dá)式和對(duì)數(shù)表達(dá)式。由于運(yùn)算結(jié)果的有效位數(shù)與運(yùn)算符的具體類型有關(guān),因此,識(shí)別提取操作可按運(yùn)算符的運(yùn)算優(yōu)先級(jí)從低級(jí)到高級(jí)的次序分層進(jìn)行,算法如下(I)按照從運(yùn)算式的最前面到最后面的順序依次搜索和識(shí)別運(yùn)算式expression中的每一個(gè)字符4,當(dāng)搜索到“ + ”和號(hào)時(shí),就以此為斷點(diǎn)提取子運(yùn)算式,它是相鄰兩個(gè)斷點(diǎn)之間的運(yùn)算表達(dá)式,該子運(yùn)算式稱為加減項(xiàng)AS_Iterm(i)。若沒(méi)有搜索到“ + 號(hào),則說(shuō)明該運(yùn)算式中沒(méi)有加、減運(yùn)算,此時(shí)只有一個(gè)加減項(xiàng)AS_Iterm(l),該項(xiàng)中只可能有乘除冪運(yùn)算、三角函數(shù)運(yùn)算、對(duì)數(shù)運(yùn)算。加減項(xiàng)提取的算法流程圖如圖I所示。
(2)效仿(1),搜索每一個(gè)加減項(xiàng)AS_Iterm(i),當(dāng)搜索到和“/”號(hào)時(shí),就以此為斷點(diǎn)提取子運(yùn)算式,它是相鄰兩個(gè)斷點(diǎn)之間的運(yùn)算表達(dá)式,該子運(yùn)算式稱為乘除項(xiàng)MD_Iterm(J)0若沒(méi)有搜索到號(hào),則說(shuō)明此加減項(xiàng)是運(yùn)算數(shù)據(jù)或冪運(yùn)算表達(dá)式或三角函數(shù)表達(dá)式或?qū)?shù)表達(dá)式,此加減項(xiàng)就為MD_Iterm(l)。乘除項(xiàng)提取的算法流程圖如圖2所示。
(3)效仿(I),搜索每一個(gè)乘除項(xiàng),當(dāng)搜索到時(shí),則前面搜索到的就為冪底表達(dá)式,稱為冪底項(xiàng)P_Iterm。若沒(méi)有搜索到“ ~ ”,則該乘除項(xiàng)沒(méi)有冪運(yùn)算,只可能是數(shù)據(jù)或三角函數(shù)表達(dá)式或?qū)?shù)表達(dá)式。冪底項(xiàng)提取的算法流程圖如圖3所示。 (4)效仿⑴,搜索冪底項(xiàng)(若無(wú)冪底項(xiàng)P_Iterm,則搜索乘除項(xiàng)MD_Iterm(j)),通過(guò)搜索字符串“sin”或“cos”或“tan”或“l(fā)og”來(lái)識(shí)別三角函數(shù)或?qū)?shù)表達(dá)式(在VB中,“l(fā)og”表示自然對(duì)數(shù)),若無(wú)“sin”或“cos”或“tan”或“l(fā)og”,則該項(xiàng)就為算術(shù)運(yùn)算數(shù)據(jù),否則計(jì)SIN = “sin”或COS = “cos”或TAN = “tan”或LOG = “l(fā)og”。若搜索到三角函數(shù)或?qū)?shù)表達(dá)式,則提取其括號(hào)中的數(shù)據(jù)。三角函數(shù)、對(duì)數(shù)運(yùn)算數(shù)據(jù)提取的算法流程圖如圖4所示。(5)時(shí)間、角度數(shù)據(jù)的識(shí)別與轉(zhuǎn)換由于數(shù)據(jù)包括十進(jìn)制數(shù)據(jù)和時(shí)間、角度等六十進(jìn)制數(shù)據(jù)兩種類型,因此,在數(shù)據(jù)運(yùn)算之前有必要對(duì)數(shù)據(jù)的類型進(jìn)行識(shí)別,以便完成相應(yīng)的有效位數(shù)計(jì)數(shù)、轉(zhuǎn)換及運(yùn)算。通過(guò)識(shí)別字符”、“',,、“" ”來(lái)識(shí)別小時(shí)、度、分、秒,數(shù)據(jù)中若沒(méi)有這些字符,則其為十進(jìn)制數(shù)。十進(jìn)制數(shù)可直接采用高級(jí)語(yǔ)言系統(tǒng)中的運(yùn)算功能進(jìn)行運(yùn)算,對(duì)于時(shí)間、角度的算術(shù)運(yùn)算采用小時(shí)、度、分、秒分別運(yùn)算,即小時(shí)與小時(shí)運(yùn)算、度與度運(yùn)算、分與分運(yùn)算、秒與秒運(yùn)算,當(dāng)運(yùn)算結(jié)果超過(guò)60則進(jìn)一個(gè)單位。對(duì)于角度的三角函數(shù)運(yùn)算,則必需將角度化成弧度來(lái)運(yùn)算。小時(shí)、度、分、秒提取算法實(shí)現(xiàn)過(guò)程①初始化數(shù)據(jù)字符變量data ="",小時(shí)字符變量hour ="",度字符變量degree ,分字符變量minute,秒字符變量second ="";②從左至右搜索角度、時(shí)間數(shù)據(jù)字符串string中的每一個(gè)字符dn ;③識(shí)別字符dn ;④若dn 不為“”、“?!?、“'”、“"”,則 data = data+dn ;若 dn 為字符“”,則 hour=data ;若 dn 為字符“?!?貝丨J degree = data,若 dn 為字符“'”,貝丨J minute = data,若 dn為字符“"”,貝丨J second = data ;⑤搜索再下一個(gè)字符dn+1,若n+1小于或等于string的長(zhǎng)度,則n = n+l,并進(jìn)入③;否則結(jié)束搜索。若data或hour或degree或minute或second不為空字符""時(shí),貝Ij其為小時(shí)、度、分、秒提取的結(jié)果。以上小時(shí)、度、分、秒提取算法流程圖如圖5所示。弧度的轉(zhuǎn)化算法如下Ji = 3. 1415926data = Val (degree)* n /180+Val (minute)* n /180/60+Val (second)*3i /180/60/60十進(jìn)制數(shù)據(jù)的判別算法如下
If SIN = " " And COS = " " And TAN = " " And LOG = " " Then運(yùn)算數(shù)據(jù)=dataEnd If十進(jìn)制運(yùn)算數(shù)據(jù)有效位數(shù)的計(jì)數(shù)一算法2 :運(yùn)算式中的運(yùn)算數(shù)據(jù)提取出來(lái)后,就可計(jì)數(shù)它們的有效位數(shù)。這里所要計(jì)數(shù)的運(yùn)算數(shù)據(jù)是指只參與算術(shù)運(yùn)算的數(shù)據(jù),即只參與力口、減、乘、除、冪運(yùn)算的數(shù)據(jù)。對(duì)于時(shí)間、角度的算術(shù)運(yùn)算,由于通過(guò)對(duì)“”、“?!?、“"”的識(shí)別可直接判別出運(yùn)算結(jié)果的誤差位,而無(wú)需用運(yùn)算數(shù)據(jù)的有效位數(shù)來(lái)判別,因此,這里只需對(duì)十進(jìn)制數(shù)據(jù)進(jìn)行有效位數(shù)的計(jì)數(shù)。三角函數(shù)和對(duì)數(shù)括號(hào)中的數(shù)據(jù)雖然也是有效數(shù)字,但無(wú)需計(jì)數(shù)其有效位數(shù),而是要計(jì)數(shù)三角函數(shù)值和對(duì)數(shù)值的有效位數(shù)。有效數(shù)字在數(shù)據(jù)中,從第一個(gè)不為零的數(shù)字開(kāi)始直到最低位的數(shù)字為止的所有數(shù)字都為有效數(shù)字,這些數(shù)字的個(gè)數(shù)即為該數(shù)據(jù)的有效位數(shù),數(shù)據(jù)中的最后一位為誤差位或可疑位。如32. 670的有效數(shù)字位數(shù)為5位(即“32670”5個(gè)數(shù)字),最后一位的“0”為誤差位。0.04092的有效數(shù)字位數(shù)為4位(即“4092” 4個(gè)數(shù)字),最一位的“2”的為誤差位。運(yùn)算數(shù)據(jù)有效數(shù)字位數(shù)的計(jì)數(shù)算法如下從左至右(即從數(shù)據(jù)的最高位到最低位)搜索數(shù)據(jù)中的每一個(gè)數(shù)字,當(dāng)搜索到第一個(gè)不為零的數(shù)字時(shí),有效數(shù)字的個(gè)數(shù)計(jì)為l(n = I)。此后,每搜索到一個(gè)數(shù)字時(shí),有效數(shù)字的個(gè)數(shù)就加1,即n = n+1,直到搜索到最低位的數(shù)字為止。數(shù)據(jù)搜索結(jié)束后的n值即為該數(shù)據(jù)的有效數(shù)字的個(gè)數(shù),數(shù)據(jù)的最后(或最低)一位即為可疑位或誤差位。運(yùn)算數(shù)據(jù)有效數(shù)字的誤差位的定位——算法3 :加減運(yùn)算結(jié)果的有效位數(shù)是由各加減項(xiàng)(這里是指參與加減運(yùn)算的數(shù)據(jù))的誤差位來(lái)決定的,因此,必須要識(shí)別定位出每一個(gè)加減項(xiàng)的誤差位,才可導(dǎo)出加減運(yùn)算結(jié)果的有效位數(shù)。(I)定位十進(jìn)制數(shù)的誤差位在數(shù)據(jù)的表現(xiàn)形式中,誤差位總是出現(xiàn)在個(gè)位或更低的位數(shù)上。因此,從左至右(即從數(shù)據(jù)的最高位到最低位)搜索數(shù)據(jù)中的每一個(gè)數(shù)字,當(dāng)搜索到小數(shù)點(diǎn)時(shí)開(kāi)始計(jì)數(shù)誤差位,此時(shí)計(jì)m = 0,往后每搜索到一個(gè)數(shù)字,m就減1,即m = m_l,一直搜索到最低位數(shù)字為止。搜索終止時(shí),數(shù)據(jù)的誤差位就為m,若沒(méi)有搜索到小數(shù)點(diǎn),則m = 0,即誤差位在個(gè)位上。m = -I時(shí),小數(shù)點(diǎn)后第I位是誤差位,m = -2時(shí),小數(shù)點(diǎn)后第2位是誤差位,...。(2)定位時(shí)間、角度的誤差位通過(guò)對(duì)“”、“。”、“'”、“"”等單位符號(hào)的識(shí)別來(lái)識(shí)別時(shí)間、角度的誤差位,即
誤差位在最小的單位上。如34° 56'的誤差在“分”位上,42' 15"的誤差在“秒”位上。計(jì)數(shù)三角函數(shù)值、對(duì)數(shù)值的有效位數(shù)一算法4 (I)利用算法3定位原運(yùn)算數(shù)據(jù)的最后一位誤差位,并對(duì)該位進(jìn)I后得到新的運(yùn)算數(shù)據(jù);(2)對(duì)原數(shù)據(jù)和新數(shù)據(jù)分別計(jì)算它們的對(duì)數(shù)值或三角函數(shù)值;(3)按從最高位到最低位的順序,--比較這兩個(gè)對(duì)數(shù)值中相同位上的數(shù)字,同時(shí) 利用算法2計(jì)數(shù)這兩個(gè)對(duì)數(shù)值的有效數(shù)字位數(shù),直到這兩個(gè)相同位上的數(shù)字不相等為止,此時(shí),所計(jì)數(shù)得到的位數(shù)即為原運(yùn)算數(shù)據(jù)對(duì)數(shù)值的有效數(shù)字位數(shù)。由于在高級(jí)語(yǔ)言系統(tǒng)中,角度是用弧度來(lái)表示的,而物理實(shí)驗(yàn)數(shù)據(jù)是用度數(shù)來(lái)表示角度的,根據(jù)這個(gè)特點(diǎn),必須先識(shí)別角度的誤差位,以便在該位加I后得到新角度,再將其轉(zhuǎn)換成弧度來(lái)進(jìn)行三角函數(shù)運(yùn)算。 位數(shù)隨機(jī)的有效數(shù)字的科學(xué)記數(shù)法的表示一算法5 :根據(jù)有效數(shù)字的運(yùn)算規(guī)則,在乘、除、冪運(yùn)算的結(jié)果中,誤差位可能高于個(gè)位,這時(shí)就必需要用科學(xué)記數(shù)法來(lái)表示該運(yùn)算結(jié)果。如在21. 3X456. 7 = 9727. 71中,由于運(yùn)算數(shù)據(jù)的有效數(shù)字位數(shù)最少的是3位(如數(shù)據(jù)“21. 3”),則運(yùn)算結(jié)果就只能得出3個(gè)有效數(shù)字,即運(yùn)算結(jié)果的十位就是誤差位了,運(yùn)算的有效結(jié)果只能用科學(xué)記數(shù)法表示為9. 73X 103。計(jì)算機(jī)在自動(dòng)處理這種情況下的運(yùn)算時(shí),除了要自動(dòng)運(yùn)算外,還要能夠自動(dòng)將計(jì)算結(jié)果轉(zhuǎn)換成科學(xué)記數(shù)法的形式,即將9727. 71轉(zhuǎn)換成9.73E+3m的形式,其中,E表示底數(shù)10,+3表示10的指數(shù)(即數(shù)量級(jí)表示)??茖W(xué)記數(shù)法中的指數(shù)值與有效數(shù)字位數(shù)有密切的關(guān)系,它是科學(xué)計(jì)數(shù)法的計(jì)算機(jī)表示的依據(jù)。當(dāng)數(shù)據(jù)的絕對(duì)值小于I時(shí),如0. 00056082,第一個(gè)不為0的數(shù)字“5”的前面“0”的個(gè)數(shù)(=4)即為該數(shù)據(jù)科學(xué)記數(shù)法中負(fù)指數(shù)的大小,即5. 6082X10'當(dāng)數(shù)據(jù)的絕對(duì)值大于I時(shí),如56082394. 107。從與第一個(gè)不為0的數(shù)字“5”后相鄰的數(shù)字開(kāi)始直到個(gè)位的所有數(shù)字的個(gè)數(shù)(=7)即為該數(shù)據(jù)科學(xué)記數(shù)法中正指數(shù)的大小,即:5. 6082394107XIO70設(shè)數(shù)據(jù)的字符串為(11(12(13...4[1],其中L為字符串的長(zhǎng)度。從左至右(即從數(shù)據(jù)的最高位到最低位)搜索提取并識(shí)別字符串?dāng)?shù)據(jù)中的每一位數(shù)字字符dn,若第I位字符Cl1 =“0”,則該數(shù)據(jù)為絕對(duì)值小于I的數(shù)據(jù),記指數(shù)為index = -1,往后每搜索的I位字符dn若為“0”,則指數(shù)減1,即index = index-1,直到搜索到第I個(gè)不為“0”的字符dn為止。當(dāng)搜索到第I個(gè)不為“0”的字符dn時(shí),重建新的數(shù)據(jù)字符串string,此時(shí)令string = dn+〃 .",
”為小數(shù)點(diǎn)字符。往后每搜索到I位字符d ,string就增加I位字符d ,即string =string+dn;若第I位字符Cl1古"0",該被搜索的數(shù)據(jù)即為絕對(duì)值大于I的數(shù)據(jù),此時(shí)記string = (I1+".",并令index = O。往后每搜索到I位不為“ ”的字符Uj string =string+dn,且在搜索到”之前,每搜索到I位字符d 時(shí),貝丨J index = index+1,當(dāng)搜索到”時(shí),則停止指數(shù)的累加。當(dāng)數(shù)據(jù)搜索完后則可得科學(xué)記數(shù)法的數(shù)據(jù)字符串為string =string+" E" +StHindex),設(shè)StrO為將數(shù)值型數(shù)據(jù)轉(zhuǎn)換成字符型數(shù)據(jù)的轉(zhuǎn)換函數(shù)[1],算法流程圖如圖6所示。四舍六入五配偶的處理——算法6 :數(shù)據(jù)運(yùn)算結(jié)果的有效位數(shù)由運(yùn)算數(shù)據(jù)的有效位數(shù)來(lái)決定,運(yùn)算結(jié)果的有效位數(shù)決定后就要涉及到運(yùn)算結(jié)果有效數(shù)字位數(shù)的取舍問(wèn)題,運(yùn)算結(jié)果有效數(shù)字位數(shù)的取舍要遵循有效數(shù)字位數(shù)的取舍原則——四舍六入五配偶[2_4],取舍算法如下從左至右(即從數(shù)據(jù)的最高位到最低位)搜索運(yùn)算結(jié)果數(shù)據(jù)中的每一位數(shù)字,每搜索到一位數(shù)字或小數(shù)點(diǎn)就按原來(lái)的順序與前面搜索到的數(shù)字排列成一個(gè)字符串,即string = string+Str (dn),其中,dn是搜索到的當(dāng)前位數(shù)字。當(dāng)搜索到第I個(gè)可疑位(數(shù)據(jù)運(yùn)算后的結(jié)果可能不止一個(gè)可疑位)處的數(shù)字dn時(shí),則檢查該可疑位后面I位相鄰的數(shù)字。若該數(shù)字大于5,貝丨J dn+l, string = string+Str (dn+l),并終止搜索;若該數(shù)字小于5,則dn不變,string = string+Str (dn),并終止搜索;若該數(shù)字等于5,則再檢查該數(shù)字后所有位處的數(shù)字,直到最低位為止。其中只要有一位數(shù)字大于 ,則^+丨,string =string+Str (dn+l);若全為“0”或無(wú)數(shù)字,則檢查dn的奇偶性。若《為奇數(shù),則dn+l, string=string+Str (dn+l),若 dn 為偶數(shù),則 dn 不變,string = string+Str (dn)。完成四舍六入五配偶的處理后,則提取字符串string。若數(shù)據(jù)中不存在指數(shù)部分“E+index”(index為不等于零的正負(fù)指數(shù)),則string就為取舍的結(jié)果;S“E+indeX”存在,則提取之,取舍的結(jié)果就為 string = string+ " E〃 +Str (index)數(shù)據(jù)表示形式的轉(zhuǎn)換——算法7 :在有效數(shù)字的加減運(yùn)算中,為確定運(yùn)算結(jié)果的誤差位,往往需要將運(yùn)算數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的形式,如2. 34 X 103+1. 8976-2. 68 X IO1= (2. 34+0. 0018976-0. 0268) X IO3 = 2. 32 X IO3上式中,運(yùn)算數(shù)據(jù)全部轉(zhuǎn)換成IO3的形式,可知最高誤差位在小數(shù)點(diǎn)后第二位處(如數(shù)據(jù)“2. 34”)。這樣,為保持每個(gè)運(yùn)算數(shù)據(jù)的誤差位不變,以運(yùn)算數(shù)據(jù)中冪指數(shù)最大的為準(zhǔn)(如“103”),將各數(shù)據(jù)全部轉(zhuǎn)換成該最大指數(shù)的形式。這樣,運(yùn)算結(jié)果的誤差就在小數(shù)點(diǎn)后的第二位處(如“2.32X 103”)。轉(zhuǎn)換算法如下設(shè)原數(shù)據(jù)的指數(shù)為n,當(dāng)改為m(m > n)時(shí),則數(shù)據(jù)中的小數(shù)點(diǎn)向左移m_n位,亦即數(shù)據(jù)左邊增加了 m-n個(gè)“0”,小數(shù)點(diǎn)移至第一個(gè)“0”的后面。示意如下
d0 . d_xd_2h dLx\0n = 0^OOA^O d0d_^d_2 A dLx\0m
個(gè) ‘‘ 0”有效數(shù)字運(yùn)算式的運(yùn)算及運(yùn)算結(jié)果有效位數(shù)的智能取舍一算法8 :考慮到運(yùn)算結(jié)果的誤差位可能高于個(gè)位的情況,將每一步的運(yùn)算結(jié)果都轉(zhuǎn)換成科學(xué)記數(shù)法的表示形式,再對(duì)該形式的數(shù)據(jù)進(jìn)行有效數(shù)字的取舍處理。運(yùn)算算法如下從左至右搜索數(shù)值運(yùn)算式字符串中的每一個(gè)字符,若字符不為“ +
則該字符為運(yùn)算數(shù)據(jù)中的一個(gè)數(shù)字或小數(shù)點(diǎn)或三角函數(shù)、對(duì)數(shù)運(yùn)算符中的一個(gè)字符。首先采用算法1,以字符“ +為斷點(diǎn)搜索提取運(yùn)算式中的每一個(gè)數(shù)據(jù)或
三角函數(shù)表示式或?qū)?shù)表示式。當(dāng)搜索的字符為“ + ”或時(shí),則檢查其前一位相鄰的字符,若前一位字符為“E”,說(shuō)明數(shù)據(jù)為科學(xué)記數(shù)法表示,則繼續(xù)往后搜索;若不為“E”,則“ + ”或處就為數(shù)據(jù)提取的斷點(diǎn),提取每一個(gè)加減項(xiàng)。再以為斷點(diǎn)提取每一個(gè)加減項(xiàng)中的乘除項(xiàng),以為斷點(diǎn)提取乘除項(xiàng)中的冪底數(shù)據(jù)或三角函數(shù)表示式或?qū)?shù)表示式,以三角函數(shù)運(yùn)算符和對(duì)數(shù)運(yùn)算符搜索識(shí)別三角函數(shù)表示式和對(duì)數(shù)表示式,若三角函數(shù)表示式和對(duì)數(shù)表示式存在,則采用算法3進(jìn)行三角函數(shù)運(yùn)算和對(duì)數(shù)運(yùn)算,計(jì)數(shù)它們運(yùn)算結(jié)果的有效位數(shù),將這些有效數(shù)字代替并放置在三角函數(shù)表示式或?qū)?shù)表示式的位置處成為算術(shù)運(yùn)算的數(shù)據(jù)。接下來(lái)就對(duì)乘除運(yùn)算數(shù)據(jù)、冪中的底數(shù)數(shù)據(jù)運(yùn)用算法2來(lái)計(jì)算各數(shù)據(jù)的有效數(shù)字個(gè)數(shù)Iij,記下其中有效數(shù)字最少的個(gè)數(shù)min {n」},則這些數(shù)據(jù)的乘除冪運(yùn)算結(jié)果的有效數(shù)字的個(gè)數(shù)就為mining。對(duì)這些數(shù)據(jù)進(jìn)行乘除冪運(yùn)算,運(yùn)用算法5將運(yùn)算結(jié)果用科學(xué)記數(shù)法表示,運(yùn)用算法2、6和min {rij}來(lái)選取該運(yùn)算結(jié)果的最后一位,提取該有效數(shù)字,將其代替并放置在該乘除冪運(yùn)算項(xiàng)的位置處,組成新的只含有加減運(yùn)算的數(shù)值運(yùn)算式。運(yùn)用算法7統(tǒng)一各加減數(shù)據(jù)中科學(xué)記數(shù)法的指數(shù)表示形式,并提取出該指數(shù)形式,運(yùn)用算法4計(jì)算該加減運(yùn)算式中的每一個(gè)數(shù)據(jù)的誤差位IV記下其中位數(shù)最高的誤差位maxImJ。對(duì)這些數(shù)據(jù)進(jìn)行加減運(yùn)算,運(yùn)算結(jié)果的誤差位則為max ImJ,運(yùn)用算法2、6和maxlmj來(lái)選取該結(jié)果的最后一位。算法流程圖如圖7所示。有效數(shù)字運(yùn)算及其運(yùn)算結(jié)果有效位數(shù)智能選取的過(guò)程設(shè)有效數(shù)字運(yùn)算式如下,
5. 24~2*6. 25/1. 25-8. 95~4+12. 5*3. 252016-2. 4736+40. 4625/3. 25將該式輸入至一個(gè)文本框I中,按“數(shù)據(jù)運(yùn)算”按鈕2后,系統(tǒng)則自動(dòng)對(duì)該運(yùn)算式進(jìn)行運(yùn)算,并在該按鈕下面的列表框3中顯示了該運(yùn)算式的運(yùn)算結(jié)果。為便于驗(yàn)證,運(yùn)算過(guò)程將分步顯示在列表框中,示意圖如圖8所示。列表框中的第0行為原數(shù)值運(yùn)算表達(dá)式,系統(tǒng)首先計(jì)數(shù)每個(gè)加減項(xiàng)中最少的有效數(shù)字位數(shù),第I項(xiàng)“5. 24~2*6. 25/1. 25”中的最少有效數(shù)字位數(shù)為3位,如數(shù)據(jù)“5. 24”、“6. 25”、“ I. 25”都是3位有效數(shù)字。第2項(xiàng)“8. 95~4”只有I個(gè)運(yùn)算數(shù)據(jù)“8. 95”(其中指數(shù)為常數(shù),不屬于有效數(shù)字),其有效數(shù)字位數(shù)是3位,則該項(xiàng)最少的有效數(shù)字位數(shù)就是3位。第3項(xiàng)“12. 5*3. 252016”中有效數(shù)字位數(shù)最少的數(shù)據(jù)是“12. 5”,有效位數(shù)是3。第4項(xiàng)“2. 4736”是I個(gè)數(shù)據(jù),有效數(shù)字位數(shù)是5位。第5項(xiàng)“40. 4625/3. 25”中有效數(shù)字位數(shù)最少的數(shù)據(jù)是“3. 25”,有效位數(shù)是3。這些最少的有效位數(shù)都是各項(xiàng)運(yùn)算結(jié)果的有效數(shù)字取舍的依據(jù)。列表框中的第I行是原式中冪運(yùn)算的結(jié)果,冪運(yùn)算是該式子中運(yùn)算優(yōu)先級(jí)最高的運(yùn)算。在原式的第I個(gè)加減項(xiàng)“5. 24~2*6. 25/1. 25”中,冪的運(yùn)算結(jié)果為“27. 4576”,則得出第I行中的第I個(gè)加減項(xiàng)“27. 4576*6. 25/1. 25”的表現(xiàn)形式。而原式中的第2個(gè)加減項(xiàng)只有冪I種運(yùn)算,則“8. 95~4”的運(yùn)算結(jié)果必須用有效數(shù)字來(lái)表示,根據(jù)有效數(shù)字冪運(yùn)算結(jié)果的有效數(shù)字位數(shù)取舍原則,運(yùn)算結(jié)果只能取3個(gè)有效數(shù)字。純數(shù)字運(yùn)算的結(jié)果為“6416. 41050625”,要取3個(gè)有效數(shù)字,則說(shuō)明誤差就已在十位上了,此時(shí)必須用科學(xué)記數(shù)法來(lái)表示,根據(jù)有效數(shù)字的取舍的原則,則取為“6. 42*10~3”。列表框中的第2行是除法運(yùn)算的結(jié)果,第I加減項(xiàng)“27. 4576*6. 25/1. 25”的結(jié)果為“27. 4576*5”。而第5個(gè)加減項(xiàng)“40. 4625/3. 25”只有除法I種運(yùn)算,因此,其運(yùn)算結(jié)果要用有效數(shù)字表示。其純數(shù)學(xué)運(yùn)算結(jié)果為40. 4625/3. 25 = 12. 45,根據(jù)有效數(shù)字除法運(yùn)算結(jié)果的有效數(shù)字位數(shù)選取原則,結(jié)果只能取3個(gè)有效數(shù)字,因此,根據(jù)四舍六入五配偶的原則,“5”是最后一位數(shù)字,且其前一位數(shù)字是偶數(shù)“4”,因此舍去“5”,結(jié)果為“ I. 24*10~I”。列表框中的第3行是乘法運(yùn)算的結(jié)果,第I個(gè)加減項(xiàng)“27. 4576*5”的純數(shù)學(xué)運(yùn)算結(jié)果為 37. 288 (即 “5. 24~2*6. 25/1. 25” 的運(yùn)算結(jié)果)。由于 “5. 24~2*6. 25/1. 25” 中的最少有數(shù)字位數(shù)為3位,根據(jù)有效數(shù)字乘法運(yùn)算結(jié)果的有效數(shù)字位數(shù)選取原則,其最終運(yùn)算結(jié)果只能取3個(gè)有效數(shù)字,因此,結(jié)果為“ I. 37*10~2”。第3個(gè)加減項(xiàng)“ 12. 5*3. 252016”的純數(shù)學(xué)運(yùn)算結(jié)果為40. 6502,由于結(jié)果取3個(gè)有效數(shù)字,則誤差位在小數(shù)點(diǎn)后第I位“6”處,由于其后I位數(shù)是“5”,且“5”后面有不為0的數(shù)字“2”,則進(jìn)位,結(jié)果就為“4. 07*10~1”。列表框中的第4行是將各加減項(xiàng)運(yùn)算數(shù)據(jù)的形式統(tǒng)一化成10~3數(shù)量級(jí)的形式,可得有效數(shù)字的最高誤差位在小數(shù)點(diǎn)后第2位處(如括號(hào)中的數(shù)據(jù)“6. 42”),則加減運(yùn)算的最終結(jié)果的有效數(shù)字的誤差位也就在小數(shù)點(diǎn)后第2位上,如列表框中第5行的最終運(yùn)算結(jié)果 “-6. 23*10~3” 所示。系統(tǒng)運(yùn)算的結(jié)果與人工運(yùn)算的結(jié)果相同,運(yùn)用圖8系統(tǒng)對(duì)不同的有效數(shù)字多項(xiàng)式 進(jìn)行了大量的實(shí)驗(yàn),結(jié)果表明系統(tǒng)運(yùn)算結(jié)果的正確率為100%。各個(gè)運(yùn)算步驟顯示了運(yùn)算過(guò)程中各個(gè)分步運(yùn)算結(jié)果的有效數(shù)字位數(shù)選取結(jié)果,顯示了這些分步結(jié)果與總運(yùn)算結(jié)果的邏輯關(guān)系,這些步驟是總運(yùn)算結(jié)果的理由步驟,各個(gè)運(yùn)算步驟是對(duì)各個(gè)分步運(yùn)算結(jié)果有效位數(shù)選取方法的驗(yàn)證。該有效數(shù)字運(yùn)算方法已具體用于了我院大學(xué)生物理實(shí)驗(yàn)數(shù)據(jù)處理評(píng)估系統(tǒng)中,其中就包括了評(píng)估大學(xué)生對(duì)其物理實(shí)驗(yàn)數(shù)據(jù)處理結(jié)果有效數(shù)字位數(shù)選取的正確性。
具體實(shí)施方式
是將該方法的實(shí)現(xiàn)程序構(gòu)成了一個(gè)程序函數(shù),該函數(shù)的輸入?yún)?shù)就是有效數(shù)字運(yùn)算式,輸出參數(shù)就是最終運(yùn)算結(jié)果的有效數(shù)字表示形式。計(jì)算機(jī)運(yùn)用該函數(shù)對(duì)學(xué)生獲取的物理實(shí)驗(yàn)數(shù)據(jù)進(jìn)行有效數(shù)字智能運(yùn)算處理,并將該處理結(jié)果作為評(píng)估標(biāo)準(zhǔn)來(lái)評(píng)估學(xué)生人為進(jìn)行物理實(shí)驗(yàn)數(shù)據(jù)處理的結(jié)果。本實(shí)施例能夠根據(jù)運(yùn)算數(shù)據(jù)的隨機(jī)有效位數(shù)和不同的運(yùn)算類型自適應(yīng)地選取其相對(duì)應(yīng)的運(yùn)算結(jié)果的有效數(shù)字位數(shù),符合運(yùn)算結(jié)果有效數(shù)字位數(shù)選取的原則和四舍六入五配偶的誤差位修約原則,選取后的有效位數(shù)以及有效數(shù)字結(jié)果正確,正確率為100%,滿足物理實(shí)驗(yàn)數(shù)據(jù)處理的要求。同時(shí)該方法無(wú)需人為設(shè)定運(yùn)算結(jié)果的有效數(shù)字位數(shù),消除了以往有效數(shù)字位數(shù)選取時(shí)人為因素的影響。
權(quán)利要求
1.一種有效數(shù)字運(yùn)算結(jié)果的有效位智能選取及表示方法,其特征在于所述有效位智能選取及表示方法包括以下步驟 (1)從左至右捜索數(shù)值運(yùn)算式字符串中的每ー個(gè)字符,若字符不為“ ~ ”,則該字符為運(yùn)算數(shù)據(jù)中的ー個(gè)數(shù)字或小數(shù)點(diǎn)或三角函數(shù)、對(duì)數(shù)運(yùn)算符中的一個(gè)字符; (2)以字符“+為斷點(diǎn)搜索提取運(yùn)算式中的每ー個(gè)數(shù)據(jù)或三角函數(shù)表示式或?qū)?shù)表示式;當(dāng)捜索的字符為“ + ”或“-”吋,則檢查其前一位相鄰的字符,若前一位字符為“E”,說(shuō)明數(shù)據(jù)為科學(xué)記數(shù)法 表示,則繼續(xù)往后搜索;若不為“E”,則“ + ”或處就為數(shù)據(jù)提取的斷點(diǎn),提取每ー個(gè)加減項(xiàng); (3)再以為斷點(diǎn)提取每一個(gè)加減項(xiàng)中的乘除項(xiàng),以為斷點(diǎn)提取乘除項(xiàng)中的冪底數(shù)據(jù)或冪底三角函數(shù)表示式或冪底對(duì)數(shù)表示式,對(duì)于科學(xué)記數(shù)法的冪底數(shù)據(jù)的識(shí)別方法同(2)。以三角函數(shù)運(yùn)算符和對(duì)數(shù)運(yùn)算符搜索識(shí)別三角函數(shù)表示式和對(duì)數(shù)表示式,若三角函數(shù)表示式和對(duì)數(shù)表示式存在,則進(jìn)行三角函數(shù)運(yùn)算和對(duì)數(shù)運(yùn)算,計(jì)數(shù)它們運(yùn)算結(jié)果的有效位數(shù),將這些有效數(shù)字代替并放置在三角函數(shù)表示式或?qū)?shù)表示式的位置處成為算木運(yùn)算的數(shù)據(jù); (4)對(duì)于乘除運(yùn)算數(shù)據(jù)、冪中的底數(shù)數(shù)據(jù),計(jì)算各數(shù)據(jù)的有效數(shù)字個(gè)數(shù)Iij,記下其中最小的個(gè)數(shù)min {nj,則這些數(shù)據(jù)的乘除冪運(yùn)算結(jié)果的有效數(shù)字的個(gè)數(shù)就為min {nj,對(duì)這些數(shù)據(jù)進(jìn)行乘除冪運(yùn)算,將運(yùn)算結(jié)果用科學(xué)記數(shù)法表示,根據(jù)mining來(lái)決定運(yùn)算結(jié)果的有效位數(shù),根據(jù)四舍六入五配偶的修約規(guī)則來(lái)決定該運(yùn)算結(jié)果有效數(shù)字的取值。將該值代替并放置在該乘除冪運(yùn)算項(xiàng)的位置處,組成新的只含有加減運(yùn)算的數(shù)值運(yùn)算式; (5)通過(guò)數(shù)據(jù)表示形式的轉(zhuǎn)換,統(tǒng)ー各加減數(shù)據(jù)中科學(xué)記數(shù)法的指數(shù)表示形式,并提取出該指數(shù)形式。計(jì)算該加減運(yùn)算式中的每ー個(gè)數(shù)據(jù)的誤差位IV記下其中最高的誤差位max ImJ ,則運(yùn)算結(jié)果的誤差位就為max {mj。對(duì)這些數(shù)據(jù)進(jìn)行加減運(yùn)算,根據(jù)max {mj來(lái)決定運(yùn)算結(jié)果中位數(shù)最高的誤差位,根據(jù)四舍六入五配偶的修約規(guī)則來(lái)決定該運(yùn)算結(jié)果有效數(shù)字的取信。
全文摘要
一種有效數(shù)字運(yùn)算結(jié)果的有效位數(shù)智能選取及表示方法,從左至右搜索數(shù)值運(yùn)算式中的每一個(gè)字符,以“+”或“-”處為斷點(diǎn)獲取加減項(xiàng),以“*”或“/”處為斷點(diǎn)獲取每一個(gè)加減項(xiàng)中的乘除項(xiàng),以“^”處為斷點(diǎn)獲取每一個(gè)乘除項(xiàng)中的冪底項(xiàng)。先進(jìn)行三角函數(shù)和對(duì)數(shù)的運(yùn)算,選取運(yùn)算結(jié)果的有效位數(shù),將選取結(jié)果代替原三角函數(shù)或?qū)?shù)表達(dá)式。計(jì)數(shù)每一個(gè)加減項(xiàng)中乘除數(shù)據(jù)、冪底數(shù)據(jù)的有效位數(shù),其中最少的位數(shù)就是這些數(shù)據(jù)乘除冪運(yùn)算結(jié)果的有效位數(shù),乘除冪運(yùn)算后得到只含加減運(yùn)算的運(yùn)算式。統(tǒng)一各加減數(shù)據(jù)的科學(xué)記數(shù)法指數(shù)形式,計(jì)數(shù)各數(shù)據(jù)的誤差位,得到有效數(shù)字的誤差位。本發(fā)明采用智能選取,有效適用處理海量數(shù)據(jù)和位數(shù)隨機(jī)的場(chǎng)合,適用性良好。
文檔編號(hào)G06F7/10GK102622202SQ20121004096
公開(kāi)日2012年8月1日 申請(qǐng)日期2012年2月22日 優(yōu)先權(quán)日2012年2月22日
發(fā)明者吳姚鑫, 景程, 陳鯉江 申請(qǐng)人:浙江工業(yè)大學(xué)