跳至內容

數值修約

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

數值修約是指在運算數字前,按照一定的規則確定一致的位數,然後捨去某些數字後面多餘尾數的過程。

數值修約的歷史非常古老,甚至可能比除法還要古老。一些兩河流域的泥板有倒數的修約值[1]圓周率、年月長度的近似值也很古老。現在廣泛使用的數值修約規則,主要有四捨五入五捨六入四捨六入五留雙規則。此外還有無條件捨去無條件進位等方法。

捨去與進位

捨去:將所取位數右方的所有數字以0代換。

進位:將所取位數右方的所有數字以0代換後,再將所取位數增加1。

無條件簡化

無條件簡化分為下取整、上取整、截尾取整(無條件捨去)、無條件進位,分述如下:

下取整(floor(x),接近於負無窮)

下取整(又稱floor(x)函數,向負無窮方向取整):設原數為x,取整後的y是小於等於x的整數。定義為:

若所取位數之右有非0的數字,當原數為正數時捨去,當原數為負數時進位。例如23.7向下取整為23,−23.2向下取整為−24。取整後的數不會大於原數,因此「下取整」也稱「向負無窮方向取整」。

上取整(ceil(x),接近於正無窮)

上取整(又稱ceil(x)函數,向正無窮方向取整):設原數為x,取整後的y是大於等於x的整數。定義為:

若所取位數之右有非0的數字,當原數為正數時進位,當原數為負數時捨去。例如23.2向上取整為24,−23.7向上取整為−23。取整後的數不會小於原數,因此「上取整」也稱「向正無窮方向取整」。

截尾取整(truncate(x),無條件捨去,接近於原點)

截尾取整(又稱truncate(x)函數,向原點方向取整):設原數為x,取整後的y是0與x之間(含x)最接近x的整數。若原數值為正數,則下取整;若原數值為負數,則上取整(也相當於對原數絕對值下取整,然後再加上負號)。其定義為:

若所取位數之右有非0的數字,則一律無條件捨去。例如:23.7截尾後為23,−23.7截尾後為−23。正數取整後不會大於原數,負數取整後的數不會小於原數,因此「截尾取整」也稱「向原點方向取整」。

無條件進位(遠離於原點,接近於正或負無窮)

無條件進位(遠離於原點,正、負數各自向正、負無窮方向取整):設原數為x,取整後的y是0與y(含y)之間最接近x的整數(也可定義為0與y(含y)之間最接近0的整數,兩者等價)。若原數值為正數,則上取整;若原數值為負數,則下取整(也相當於對原數絕對值上取整,最後再加上負號)。其定義為:

若所取位數之右有非0的數字,則一律無條件進位。例如:23.2取整後為24,−23.2取整後為−24。正數取整後不會小於原數,負數取整後不會大於原數,因此「無條件進位」也稱「遠離原點方向取整」或「正、負數各自向正、負無窮方向取整」。

有條件簡化

有條件簡化通常以所取位數的次後一位數字的大小決定該捨去或是進位,當其小於一數字時則捨去;反之,若大於等於該數字時則進位。常用的有條件簡化如四捨五入、五捨六入與四捨六入五成雙等,分述如下:

四捨五入

若所取位數的位次後一位小於等於4,則捨去;反之,若大於等於5,則進位。若原數值為負數,則先以絕對值求得結果後再加負號。

五捨六入

若所取位數的位次後一位小於等於5,則捨去;反之,若大於等於6,則進位。若原數值為負數,則先以絕對值求得結果後再加負號。

五捨六入常用於商店折扣後簡化價格。

四捨六入

四捨六入五成雙規則,也稱為銀行進位法或銀行家捨入或奇進偶捨。奇進偶捨是數值簡化規則。從統計學的角度,「奇進偶捨」比「四捨五入」更精確。

視所取位數之次後一位數字為下列情況決定捨去或進位: 其具體要求舉例如下(以保留兩位小數為例):

  1. 要求保留位數的後一位如果是4,則捨去。例如5.214保留兩位小數為5.21。
  2. 要求保留位數的後一位如果是6,則進位。例如5.216保留兩位小數為5.22。
  3. 要求保留位數的後一位如果是5,而且5後面不再有數,要根據應看尾數「5」的前一位決定是捨去還是進入:如果是奇數則進入,如果是偶數則捨去。例如5.215保留兩位小數為5.22;5.225保留兩位小數為5.22。
  4. 要求保留位數的後一位如果是5,而且5後面仍有數。例如5.2254保留兩位小數為5.23,也就是說如果5後面還有數據,則無論奇偶都要進入。

按照四捨六入五成雙規則簡化數字時,也應像四捨五入規則那樣,一次簡化到指定的位數,不可以簡化數次,否則有可能得到錯誤結果。

使用方法

多步計算

計算時通常不修約中間的每一步驟的計算結果,僅修約最後的結果。這樣可以使最終結果儘可能符合所確定的位數要求。

例如:計算4.5862×1.85969212+3×4.10536並將結果保留3位有效數字。

4.5862×1.85969212+3×4.10536
=8.528920000744+12.31608
=20.845000000744(此步修約)
=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

應用

參見

參考文獻

  1. ^ Duncan J. Melville. "YBC 7289 clay tablet". 2006 [2014-02-18]. (原始內容存檔於2012-08-13).