使用VBA自带Round函数所遇到的坑
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
ROUND函数大家都非常熟悉,是Excel中用于对数字进行四舍五入的函数。它可以将一个数值按照指定的位数进行近似处理。 它的语法也非常简单:ROUND(number, num_digits) 当num_digits大于0 时,表示要将数字四舍五入到指定的小数位数。 如ROUND(2.786,2)的结果是2.79。 当num_digits等于 0 时,表示将数字四舍五入到最接近的整数。 如ROUND(3.6,0)的结果是4,而ROUND(3.4,0)的结果是3。 当num_digits小于 0 时,表示对整数部分进行四舍五入。具体来说,num_digits为-1时,函数会将数字四舍五入到十位;num_digits为-2时,函数会将数字四舍五入到百位,以此类推。 如ROUND(1236,-1)的结果是1240;ROUND(1236,-2)的结果是1200。 上面的都好理解,但是如果在VBA中使用内置的Round函数,结果就有所不同啦,这就是我遇到的坑。 比如说ROUND(4.45,1)的结果是4.5,但是在使用VBA内置的Round函数运行的结果却是4.4,这个结果显然不是我们在实际工作中所需要的。 如下图所示: 这到底是什么原因呢?原因是VBA内置的Round函数在对数值进行四舍五入运算时实行的是Bankre舍入规则。Banker 舍入,也称为四舍六入五成双,是一种在数值计算中比较精确的舍入方式。它的基本规则是:当舍去位的数值小于 5 时,直接舍去;当舍去位的数值大于 5 时,进位;当舍去位的数值等于 5 时,如果进位后前一位数字为偶数,则舍去,若前一位数字为奇数,则进位。 针对上面的4.45保留一位小数,怎么在VBA中让它变成正常的呢。 解决方法有两种: 方法一:使用工作表函数 注意:这里使用Application和不使用Application是完全不同的。 方法二:进行修正 注意:修正的小数位数一定要高于原来数据的小数位数。 该文章在 2024/10/30 11:41:31 编辑过 |
关键字查询
相关文章
正在查询... |