使用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 編輯過 |
關鍵字查詢
相關文章
正在查詢... |