数值修约

维基百科,自由的百科全书
跳转至: 导航搜索

数值修约,又称数字修约,是指在进行具体的数字运算前,按照一定的规则确定一致的位数,然后捨去某些数字后面多余的尾数的过程。

规则[编辑]

数值修约的历史非常古老,甚至可能比除法还要古老。一些美索不达米亚的泥板上有倒数的修约值。[1]圆周率、年月长度的近似值也很古老。现在被广泛使用的数值修约规则,主要有四捨五入规则和四捨六入五留双规则。在台灣尚可見到無條件捨去法無條件進位法等(高斯符号)。

四捨五入[编辑]

四捨五入规则是人们习惯采用的一种数字修约规则。

四捨五入规则的具体使用方法是:

在需要保留有效数字的位次后一位,逢五就进,逢四就捨。

例如:将数字2.1875精确保留到千分位(小数点后第三位),因小数点后第四位数字为5,按照此规则,应向前一位进一,所以结果为2.188。同理,将下列数字,全部修约为四位有效数字,结果为:

0.53664——0.5366
10.2750——10.28
18.06501——18.07
0.58346——0.5835
16.4050——16.41
27.1850——27.19

又例如將數字精確保留到個位數,7.6 會進為 8,而 7.3 會捨為 7,可以取到與該數最接近的整數。

按照四捨五入规则进行数字修约时,应一次修约到指定的位数,不可以进行数次修约,否则将有可能得到错误的结果。例如将数字15.4565修约为两位有效数字时,应一步到位:15.4565——15(正确)。如果分步修约将得到错误的结果:15.4565——15.457——15.46——15.5——16(错误)。

四捨五入修约规则,逢五就进,必然会造成结果的系统偏高,误差偏大,为了避免这样的状况出现,尽量减小因修约而产生的误差,在某些时候需要使用四捨六入五留双的修约规则。

四捨六入五留双[编辑]

四捨六入五留双规则

为了避免四捨五入规则造成的结果偏高,误差偏大的现象出现,一般采用四捨六入五留双规则(Banker's Rounding)。
準確而言,四捨六入五留双應稱作「四捨六入,逢五无后则留双」,如此就可以完全覆蓋此規則的詳情。

四捨六入五留双规则的具体方法是:

(一)当尾数小于或等于4时,直接将尾数捨去。

例如,将下列数字全部修约为四位有效数字,结果为:

0.53664——0.5366
10.2731——10.27
18.5049——18.50
0.58344——0.5834
16.4005——16.40
27.1829——27.18

(二)当尾数大于或等于6时,将尾数捨去并向前一位进位。

例如,将下列数字全部修约为四位有效数字,结果为:

0.53666——0.5367
8.3176——8.318
16.7777——16.78
0.58387——0.5839
10.29501——10.30
21.0191——21.02

(三)当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向前进一位;若前一位数字此时为偶数,則應將尾數捨去。數字「0」在此時應被視為偶數。

例如,将下列数字全部修约为四位有效数字,结果为:

0.153050——0.1530
12.6450——12.64
18.2750——18.28
0.153750——0.1538
12.7350——12.74
21.845000——21.84

(四)当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数还是偶数,也无论“5”后面不为0的数字在哪一位上,都应向前进一位。

例如,将下列数字全部修约为四位有效数字,结果为:

0.326552——0.3266
12.73507——12.74
21.84502——21.85
12.64501——12.65
18.27509——18.28
38.305000001——38.31

按照四捨六入五留双规则进行数字修约时,也应像四捨五入规则那样,一次性修约到指定的位数,不可以进行数次修约,否则得到的结果也有可能是错误的。例如将数字10.2749945001修约为四位有效数字时,应一步到位:10.2749945001——10.27(正确)。如果按照四捨六入五留双规则分步修约将得到错误结果:10.2749945001——10.274995——10.275——10.28(错误)。

使用方法[编辑]

多步计算[编辑]

一般情况下,在计算时,不对中间的每一步骤的计算结果进行修约,仅对最后的结果进行修约。这样可以使最终结果尽可能符合所确定的位数要求。

例如:计算4.5862×1.85969212+3×4.10536并将结果保留3位有效数字。

4.5862×1.85969212+3×4.10536
=8.52892+12.31608
=20.84470 (此步修约)
=20.8
(正确结果)
4.5862×1.85969212+3×4.10536
=8.53+12.32(此步第一次修约)
=20.85 (此步第二次修约)
=20.9
(错误结果,擴大誤差)

单步加、乘法[编辑]

对于一步加法乘法,也有一定的修约规则。

加法:在运算前,将所有的加数都修约到各加数中最高的尾数位。然后相加,运算后不修约。

例如:计算3.14159+97.182+0.316228

3.14159+97.182+0.316228
=3.142+97.182+0.316 (此步修约)
=100.640 (尾数的0不可省略)

乘法:在运算前,将所有的乘数都修约到各乘数中最少的有效数字位数。然后相乘,运算后将乘积修约到相同的有效数字位数。但如果有乘数为准确数或1位有效数字,可不参与修约。

例如:计算100.57234×3×6.190×0.31945

100.57234×3×6.190×0.31945
=100.6×3×6.190×0.3194 (3不参与修约;0.31945 的修约用“五留双”规则)
=596.6845548 (此步修约)
=596.7

应用[编辑]

注释[编辑]