技术篇┃IT与计量
如何在Excel中实现四舍六入五留双
□何欣
Excel目前还没有提供四舍六入五留双的修约方法,
所以常常会出现人工计算与计算机计算不符的现象,有时甚至会影响结果的判定。也曾有文章介绍利用嵌入计算模块来实现四舍六入五留双(《扩充Excel表格功能快捷修约计量数据》中国计量》,《2005年第12期第68页),但也存在一些问题,例如:(1)只能修约3~9位数;(2)嵌入计算模块需要使用者具有一定的计算机知识;(3)
100.0252修约为100.02不太恰当。
为了更方便、准确地实现四舍六入五留双,笔者经过反复验证,成功利用Excel自带的公式实现了四舍六入五留双的科学修约,完美地实现了计算机计算与人工计算的一致,这将有利于Excel在工程计算中的推广,使得人们可以从繁琐的计算中解脱出来,进一步提高工作效率。
四舍六入五留双的修约原则是:如果有效数字后面第一位数字恰好为5,5之后的数字不全为0,则在5的前一位数字进1;若5之后的数字全为0,而5的前一位数又是奇数,则在5的前一位数字进1;若5之后的数字全为0,而5的前一位数为偶数,则舍去不计。例如,将下列数字修约为四位的有效数字:
图2工作表示意图
*10^B2)<0.499999,ROUND(A2,B2),IF(ABS(TRUNC(A2,B2+5)*10^B2-TRUNC(A2,B2)*10^B2)>0.500001,ROUND(A2,B2),CEILING(ABS(TRUNC(A2,B2+1))-0.5*10^-B2,2*10^-B2)*SIGN(A2)))
其中:ABS(number):返回给定数值的绝对值,即不带符号的数值;CEILING(,significance):将参数向上舍入为最接近的整数,或最接近的指定基数的倍数;ROUND(num-
ber,num_digits):将指定的位数对数值进行四舍五入;SIGN(number):返回数字的正负号;TRUNC(number,num_digits):将数字截为整数或保留指定位数的小数。
四舍六入五留双.xls”。3.将工作表保存为“
27.0241→27.02;27.0261→27.03;27.0250→27.02;27.0150→27.02;27.0251→27.03
下面详细介绍如何实现四舍六入五留双:
4.打开平时计算的工作表,在需要修约的数列后插
入两空白列,如图3a和图3b所示。
5.在D2单元格输入需要保留的位数(可以为负数,负
数表示修约至小数点前几位数),把C1单元格的内容复制四舍六入五留双.xls”到E1单元格,复制工作表“的C2单元格至E2单元格,如图3c所示。
1.程序流程图(见图1)
开始
输入原始值和修约位数
原始值取绝对值
6.为使界面显示更直观,隐藏C和D列,如图3d所示。7.完成修约程序导入,效果如图3e所示。
N
Y
5
如说明:如需改变保留的位数,直接修改D2单元格即可。
abcde
C2单元格至
复制“四舍六入
五留双.xls中的
按修约位数四舍五入
Y
5
N
加上原始值的符号
修约完成
最后一位有效数字进位到最近的双数
图1
公式1(C2)为:
程序流程图
2.建立一个工作表(见图2)
=IF(ABS(TRUNC(A2,B2+5)*10^B2-TRUNC(A2,B2)
图3
使用示意图
100
2008.08中国计量http://www.chinajl.com.cn
IT与计量┃技术篇
=IF(ABS(TRUNC(B1,B2+5)*10^B2-TRUNC(B1,B2)*10^B2)<0.499999,ROUND(B1,B2),IF(ABS(TRUNC(B1,B2+5)*10^B2-TRUNC(B1,B2)*10^B2)>0.500001,ROUND(B1,B2),CEILING(ABS(TRUNC(B1,B2+1))-0.5*10^-B2,2*10^-B2)*SIGN(B1)))
使用方法参照图3。
图4
工作表示意图
本方法适用于Excel97/2000/XP/2003,方法简单,结果准确,可修约任意位数。如需“程序,四舍六入五留双.xls”请登录中国计量编辑部网站(http://www.jlbjb.com)下载。
计作者单位【广州市计量检测技术研究院果不方便在右侧插入空白列,也可在下方插入两空白行。但四舍六入五留双.xls”中的公式需要加以修改,如图4所示。“
公式2(B3)为:
在Excel电子表格中
用mm为单位设置行高、列宽
□蒋文彬
由于Excel电子表格行高、列宽的长度单位不是以mm为单位,用它制作打印模版极不方便。要用Excel做模版其关键在于用mm为单位设置行高、列宽。是否可以用mm为单位来制定行高、列宽呢?笔者经过很长时间的摸索,基本掌握了其行高、列宽的计算方法,解决了利用Excel制作打印模版时行高、列宽单位不直观的缺点。下面的计算方法可供大家参考和探讨。
一、基本参数计算
磅”字符”;列宽的单位是“。1.行高的单位是“
磅”与“的换算:25.4mm=1吋=72磅。2.行高“mm”
设置第一列的列宽为2个字符宽
Columns(1).ColumnWidth=2
第一列的列宽(磅)
L2=Columns(1).Width①当以X≤
列宽L=
L1
×25.4mm设置列宽时72
72
×X(字符)25.4
L1×25.4mm设置列宽时72
②当以X>
72H=X(磅)
25.4
为单位X以“mm”
字符”与“的换算3.列宽“mm”
列宽为1个字符与列宽为2个字符之差是一个定值,如:列宽为1个字符宽时是13像素,列宽为2个字符宽时是21像素,列宽为3个字符宽时是29像素(即每增加一个字符宽,增加21-13=8,29-21=8,……)。
利用程序分别得到列宽为一个字符宽和列宽为2个字符宽时的列宽(磅):
设置第一列的列宽为1个字符宽
X×72
-L125.4
列宽L=+1(字符)
L2-L1
为单位X以“mm”二、消除产生误差的方案
1.消除打印机可能产生的误差(以行高为例)
打印机所产生的误差属于A类不确定度,可以通过修正加以克服。
(1)按计算的方法画一个100mm的方框,分别按纵向和横向进行打印。分别测量打印出的实际高。纵向打印的实际行高hz、横向打印的实际行高hh。
(2)得到修正系数:纵向打印时,Khz=
Columns(1).ColumnWidth=1
第一列的列宽(磅)
100
hz
L1=Columns(1).Width
修正后,Hzxz=H×Khz
2008.08中国计量
http://www.chinajl.com.cn
101
技术篇┃IT与计量
如何在Excel中实现四舍六入五留双
□何欣
Excel目前还没有提供四舍六入五留双的修约方法,
所以常常会出现人工计算与计算机计算不符的现象,有时甚至会影响结果的判定。也曾有文章介绍利用嵌入计算模块来实现四舍六入五留双(《扩充Excel表格功能快捷修约计量数据》中国计量》,《2005年第12期第68页),但也存在一些问题,例如:(1)只能修约3~9位数;(2)嵌入计算模块需要使用者具有一定的计算机知识;(3)
100.0252修约为100.02不太恰当。
为了更方便、准确地实现四舍六入五留双,笔者经过反复验证,成功利用Excel自带的公式实现了四舍六入五留双的科学修约,完美地实现了计算机计算与人工计算的一致,这将有利于Excel在工程计算中的推广,使得人们可以从繁琐的计算中解脱出来,进一步提高工作效率。
四舍六入五留双的修约原则是:如果有效数字后面第一位数字恰好为5,5之后的数字不全为0,则在5的前一位数字进1;若5之后的数字全为0,而5的前一位数又是奇数,则在5的前一位数字进1;若5之后的数字全为0,而5的前一位数为偶数,则舍去不计。例如,将下列数字修约为四位的有效数字:
图2工作表示意图
*10^B2)<0.499999,ROUND(A2,B2),IF(ABS(TRUNC(A2,B2+5)*10^B2-TRUNC(A2,B2)*10^B2)>0.500001,ROUND(A2,B2),CEILING(ABS(TRUNC(A2,B2+1))-0.5*10^-B2,2*10^-B2)*SIGN(A2)))
其中:ABS(number):返回给定数值的绝对值,即不带符号的数值;CEILING(,significance):将参数向上舍入为最接近的整数,或最接近的指定基数的倍数;ROUND(num-
ber,num_digits):将指定的位数对数值进行四舍五入;SIGN(number):返回数字的正负号;TRUNC(number,num_digits):将数字截为整数或保留指定位数的小数。
四舍六入五留双.xls”。3.将工作表保存为“
27.0241→27.02;27.0261→27.03;27.0250→27.02;27.0150→27.02;27.0251→27.03
下面详细介绍如何实现四舍六入五留双:
4.打开平时计算的工作表,在需要修约的数列后插
入两空白列,如图3a和图3b所示。
5.在D2单元格输入需要保留的位数(可以为负数,负
数表示修约至小数点前几位数),把C1单元格的内容复制四舍六入五留双.xls”到E1单元格,复制工作表“的C2单元格至E2单元格,如图3c所示。
1.程序流程图(见图1)
开始
输入原始值和修约位数
原始值取绝对值
6.为使界面显示更直观,隐藏C和D列,如图3d所示。7.完成修约程序导入,效果如图3e所示。
N
Y
5
如说明:如需改变保留的位数,直接修改D2单元格即可。
abcde
C2单元格至
复制“四舍六入
五留双.xls中的
按修约位数四舍五入
Y
5
N
加上原始值的符号
修约完成
最后一位有效数字进位到最近的双数
图1
公式1(C2)为:
程序流程图
2.建立一个工作表(见图2)
=IF(ABS(TRUNC(A2,B2+5)*10^B2-TRUNC(A2,B2)
图3
使用示意图
100
2008.08中国计量http://www.chinajl.com.cn
IT与计量┃技术篇
=IF(ABS(TRUNC(B1,B2+5)*10^B2-TRUNC(B1,B2)*10^B2)<0.499999,ROUND(B1,B2),IF(ABS(TRUNC(B1,B2+5)*10^B2-TRUNC(B1,B2)*10^B2)>0.500001,ROUND(B1,B2),CEILING(ABS(TRUNC(B1,B2+1))-0.5*10^-B2,2*10^-B2)*SIGN(B1)))
使用方法参照图3。
图4
工作表示意图
本方法适用于Excel97/2000/XP/2003,方法简单,结果准确,可修约任意位数。如需“程序,四舍六入五留双.xls”请登录中国计量编辑部网站(http://www.jlbjb.com)下载。
计作者单位【广州市计量检测技术研究院果不方便在右侧插入空白列,也可在下方插入两空白行。但四舍六入五留双.xls”中的公式需要加以修改,如图4所示。“
公式2(B3)为:
在Excel电子表格中
用mm为单位设置行高、列宽
□蒋文彬
由于Excel电子表格行高、列宽的长度单位不是以mm为单位,用它制作打印模版极不方便。要用Excel做模版其关键在于用mm为单位设置行高、列宽。是否可以用mm为单位来制定行高、列宽呢?笔者经过很长时间的摸索,基本掌握了其行高、列宽的计算方法,解决了利用Excel制作打印模版时行高、列宽单位不直观的缺点。下面的计算方法可供大家参考和探讨。
一、基本参数计算
磅”字符”;列宽的单位是“。1.行高的单位是“
磅”与“的换算:25.4mm=1吋=72磅。2.行高“mm”
设置第一列的列宽为2个字符宽
Columns(1).ColumnWidth=2
第一列的列宽(磅)
L2=Columns(1).Width①当以X≤
列宽L=
L1
×25.4mm设置列宽时72
72
×X(字符)25.4
L1×25.4mm设置列宽时72
②当以X>
72H=X(磅)
25.4
为单位X以“mm”
字符”与“的换算3.列宽“mm”
列宽为1个字符与列宽为2个字符之差是一个定值,如:列宽为1个字符宽时是13像素,列宽为2个字符宽时是21像素,列宽为3个字符宽时是29像素(即每增加一个字符宽,增加21-13=8,29-21=8,……)。
利用程序分别得到列宽为一个字符宽和列宽为2个字符宽时的列宽(磅):
设置第一列的列宽为1个字符宽
X×72
-L125.4
列宽L=+1(字符)
L2-L1
为单位X以“mm”二、消除产生误差的方案
1.消除打印机可能产生的误差(以行高为例)
打印机所产生的误差属于A类不确定度,可以通过修正加以克服。
(1)按计算的方法画一个100mm的方框,分别按纵向和横向进行打印。分别测量打印出的实际高。纵向打印的实际行高hz、横向打印的实际行高hh。
(2)得到修正系数:纵向打印时,Khz=
Columns(1).ColumnWidth=1
第一列的列宽(磅)
100
hz
L1=Columns(1).Width
修正后,Hzxz=H×Khz
2008.08中国计量
http://www.chinajl.com.cn
101