VBA 函數 ROUND 的問題
我最近才發現 Microsoft Office VBA 裡的 Round 函數有問題!

下面是 Office 裡 Microsoft Visual Basic 的說明:

Round 函數
描述
傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。
語法
Round(expression [,numdecimalplaces])
Round 函數語法有如下幾個單元:
單元描述
expression 必要引數。要進行四捨五入運算的數值運算式。
numdecimalplaces 選擇性引數。數字值,表示進行四捨五入運算時,小數點右邊應保留的位元數。如果忽略,則 Round 函數傳回整數。

但其實是錯的!
這個函數傳回的結果其實是進位或捨去到最接近的偶數值!


Round(1.4) = 1
Round(1.5) = 2
Round(2.4) = 2
Round(2.5) = 2

如果在 VBA 中想將數值 X 四捨五入進位到整數只能這麼寫

WorksheetFunction.Round(X, 0)



Int(X + 0.5)

這樣算出來的結果才會正確!
創作者介紹

The Grant World

Grant 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • Round()是奇數進位而偶數不進位!也就是說,如果數值為0.115,這樣就會四捨五入得到0.12,但如果數值是像0.125,是偶數則不進位得到結果0.12
  • 是的,所以這跟我們中國人習慣的四捨五入是不一樣的!

    Grant 於 2015/12/29 15:36 回覆

找更多相關文章與討論