数值修约是指在运算数字前,按照一定的规则确定一致的位数,然后捨去某些数字后面多余尾数的过程。
数值修约的历史非常古老,甚至可能比除法还要古老。一些兩河流域的泥板有倒数的修约值[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,則進位。若原數值為負數,則先以絕對值求得結果後再加負號。
五捨六入常用於商店折扣後簡化價格。
四捨六入
四捨六入五成雙规则,也稱為銀行進位法或銀行家捨入或奇進偶捨。奇進偶捨是數值簡化規則。從統計學的角度,「奇進偶捨」比「四捨五入」更精確。
視所取位數之次後一位數字為下列情況決定捨去或進位:
其具體要求舉例如下(以保留兩位小數為例):
- 要求保留位數的後一位如果是4,則捨去。例如5.214保留兩位小數為5.21。
- 要求保留位數的後一位如果是6,則進位。例如5.216保留兩位小數為5.22。
- 要求保留位數的後一位如果是5,而且5後面不再有數,要根據應看尾數「5」的前一位決定是捨去還是進入:如果是奇數則進入,如果是偶數則捨去。例如5.215保留兩位小數為5.22;5.225保留兩位小數為5.22。
- 要求保留位數的後一位如果是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
|
应用
參見
参考文献