+ -
当前位置:首页 → 问答吧 → 【求助帖】四舍五入的困惑

【求助帖】四舍五入的困惑

时间:2011-08-04

来源:互联网

我需要写一个函数,其中需要对数字做一个简单处理,就是我们平时说的四舍五入,比如:
1.4 处理成 1
1.6 处理成 2
1.5 处理不变 还是1.5
最终出来的数字都是0.5的倍数
我使用round()发现实现不了
使用ceiling()函数 发现1.4都直接处理成2
请问高手是否有其他适用的函数?或者在这两个函数即可实现,但是需要加入一些语句?

作者: matinhoo   发布时间: 2011-08-04

复制内容到剪贴板
代码:
=CEILING(A1-(MOD(A1,1)<0.5)/2,0.5)

作者: wshcw   发布时间: 2011-08-04

“使用ceiling()函数 发现1.4都直接处理成2?”这个不对吧,我这里直接可以的呀

附件

搜狗截图_2011-08-04_23-49-02.png(6.96 KB)

2011-8-4 23:50

作者: 安全为主   发布时间: 2011-08-04

引用:
原帖由 安全为主 于 2011-8-4 23:50 发表
“使用ceiling()函数 发现1.4都直接处理成2?”这个不对吧,我这里直接可以的呀
不好意思  我写错了  
根据ceiling()  会往上舍入最接近0.5倍数的数字  应该是1.5
但是按照我们小学学到的四舍五入  
1.4 应该变成1才对

作者: matinhoo   发布时间: 2011-08-04

1.416 =1
1.516=1.5
1.616=2
=IF(MOD(ROUND(A1,1),1)=0.5,ROUND(A1,1),ROUND(A1,0))

作者: 白云2011   发布时间: 2011-08-04

引用:
原帖由 wshcw 于 2011-8-4 23:38 发表
=CEILING(A1-(MOD(A1,1)
非常感谢 回复的真快 而且可以实现需求
但是我在excel中学习了下
发现=(MOD(A1,1)<0.5)/2 这段函数没有看懂
到=(MOD(A1,1)<0.5)这里还只是返回一个逻辑值,为什么除以2 就返回一个数字
经测试,如果a1的小数位小于5,比如2.3,返回0.5
如果a1的小数位大于等于5,比如2.8,返回0

=(MOD(A1,1)<0.5)/2  这段函数可否再麻烦版主说明下  谢谢啦

作者: matinhoo   发布时间: 2011-08-05

=(MOD(A1,1)<0.5)/2 不外乎两种情况
即:
TRUE/2=0.5
FALSE/2=0

作者: wshcw   发布时间: 2011-08-05

相关阅读 更多