使用VBA自帶Round函數(shù)所遇到的坑
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
ROUND函數(shù)大家都非常熟悉,是Excel中用于對數(shù)字進行四舍五入的函數(shù)。它可以將一個數(shù)值按照指定的位數(shù)進行近似處理。 它的語法也非常簡單:ROUND(number, num_digits) 當(dāng)num_digits大于0 時,表示要將數(shù)字四舍五入到指定的小數(shù)位數(shù)。 如ROUND(2.786,2)的結(jié)果是2.79。 當(dāng)num_digits等于 0 時,表示將數(shù)字四舍五入到最接近的整數(shù)。 如ROUND(3.6,0)的結(jié)果是4,而ROUND(3.4,0)的結(jié)果是3。 當(dāng)num_digits小于 0 時,表示對整數(shù)部分進行四舍五入。具體來說,num_digits為-1時,函數(shù)會將數(shù)字四舍五入到十位;num_digits為-2時,函數(shù)會將數(shù)字四舍五入到百位,以此類推。 如ROUND(1236,-1)的結(jié)果是1240;ROUND(1236,-2)的結(jié)果是1200。 上面的都好理解,但是如果在VBA中使用內(nèi)置的Round函數(shù),結(jié)果就有所不同啦,這就是我遇到的坑。 比如說ROUND(4.45,1)的結(jié)果是4.5,但是在使用VBA內(nèi)置的Round函數(shù)運行的結(jié)果卻是4.4,這個結(jié)果顯然不是我們在實際工作中所需要的。 如下圖所示: 這到底是什么原因呢?原因是VBA內(nèi)置的Round函數(shù)在對數(shù)值進行四舍五入運算時實行的是Bankre舍入規(guī)則。Banker 舍入,也稱為四舍六入五成雙,是一種在數(shù)值計算中比較精確的舍入方式。它的基本規(guī)則是:當(dāng)舍去位的數(shù)值小于 5 時,直接舍去;當(dāng)舍去位的數(shù)值大于 5 時,進位;當(dāng)舍去位的數(shù)值等于 5 時,如果進位后前一位數(shù)字為偶數(shù),則舍去,若前一位數(shù)字為奇數(shù),則進位。 針對上面的4.45保留一位小數(shù),怎么在VBA中讓它變成正常的呢。 解決方法有兩種: 方法一:使用工作表函數(shù) 注意:這里使用Application和不使用Application是完全不同的。 方法二:進行修正 注意:修正的小數(shù)位數(shù)一定要高于原來數(shù)據(jù)的小數(shù)位數(shù)。 該文章在 2024/10/30 11:41:31 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |