金币
UID239766
帖子
主题
积分317
注册时间2016-3-11
最后登录1970-1-1
听众
性别保密
|
欢迎您注册蒲公英
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 chnhqp 于 2019-3-1 09:38 编辑
=if((A2*B2-0.5)/int(A2*B2)=1,int(A2*B2)+mod(int(A2*B2),2),if(A2*B2-int(A2*B2)>0.5,int(A2*B2)+1,int(A2*B2)))/B2
A2为原始数据;B2为小数点保留位数,例如:1位小数为10,2位小数为100以此类推;公式复制在C2栏内。
刚看到一个蒲友发布的公式,很棒。突然想到自己手中也有一个不错的公式,在此分享给大家。
=IF(MOD(ABS(A1*POWER(10,B1)),2)=0.5,ROUNDDOWN(A1,B1),ROUND(A1,B1))
A1为原始数据,B1为小数点保留位数。公式复制在C1栏。可以将B1替换成自己需要的保留位数的数字,让公式更简单且不需要设置B列。
公式含义:POWER(X,Y):X的Y次幂;ABS(X):X的绝对值;MOD(Y,2):Y除以2的余数;ROUNDDOWN(X,2):舍去X小数点2位以后的数字;ROUND(Y,2):对Y进行四舍五入,保留2位小数。
补充内容 (2019-3-1 10:39):
感谢zlanylz验证出公式的问题。
经过查找原因,找到是由于MOD函数浮点运算错误造成。
公式经过修正后为:=IF(ROUND(MOD(ABS(A1*POWER(10,B1)),2),2)=0.5,ROUNDDOWN(A1,B1),ROUND(A1,B1))
请大家测试。
补充内容 (2019-3-6 17:53):
=IF((A10*POWER(10,B10)-0.5)/INT(A10*POWER(10,B10))=1,ROUNDDOWN(A10,B10),ROUND(A10,B10))
麻烦大家帮忙测试一下这个公式是否可行。谢谢~~~~
补充内容 (2019-3-7 09:20):
再来优化一下公式。
=IF((A1*POWER(10,B1)-0.5)=INT(A1*POWER(10,B1)),ROUNDDOWN(A1,B1),ROUND(A1,B1)) |
|