|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
回复 4楼 lwbtest 的帖子
我回复的是《Excel函数与公式实战技巧精粹》的技巧78的解法,示例:
1.525保留2位小数的话,因第2位小数为偶数,所以第3位的5舍,得到1.52;
1.535保留两位小数的话,因为第2位小数为奇数,所以第3位的5入,得1.54。
保留2位小数的公式=ROUND($A2,2)-(MOD($A2*10^3,20)=5)%——(仅适用于正数),其原理为:
首先对A2保留按round直接四舍五入,再将A2放大1000倍,比如:上面2个数四舍五入后得到1.53、1.54
1.525放大后为1525,MOD(1525,20)=5,因此(MOD(1525,20)=5)%=0.01,因而最后得到1.53-0.01=1.52,起到了奇进偶不进的作用。
1.535放大后为1535,MOD(1535,20)=15,因此(MOD(1535,20)=5)%=0,也就是没有舍弃,因而最后得到1.54;
假如有尾巴:1.5251,放大1000倍后为1525.1,MOD(1525.1,20)=5.1不等于5,也不会被舍弃。
同理:保留1位小数的解法:
=ROUND($A2,1)-(MOD($A2*10,2)=0.5)/10——先四舍五入到1位小数,再将值放大10倍后对2求余数
比如:2.550四舍五入得2.6→放大10倍得25.50,MOD(25.50,2)=1.5,因此mod=0.5判断为FALSE→FALSE/10=0,即不舍弃。
2.650四舍五入得2.7→放大10倍得26.50,MOD(26.50,2)=0.5,因此mod=0.5判断为TRUE→TRUE/10=0.1,即最后得2.7-0.1=2.6。
2.651四舍五入得2.7→放大10倍得26.51,MOD(26.51,2)=0.51,因此mod=0.51判断为FALSE→不舍弃,即最后得2.7。
[ 本帖最后由 gouweicao78 于 2009-2-4 23:32 编辑 ] |
|