2012-07-05 76 views

回答

7

您可以在VBA

使用ROUNDFORMAT例如顯示2位小數

Dval = 1.56789 

Debug.Print Round(dVal,2) 

Debug.Print Format(dVal,"0.00") 

注意:上述會給你1.57。所以,如果你正在尋找1.56,那麼你可以存儲DVAL在一個字符串,如果你想一輪的價值,那麼你可以使用函數ROUND(但要注意,VBA當時做這個

Dim strVal As String 

dVal = 1.56789 
strVal = dVal 

If InStr(1, strVal, ".") Then 
    Debug.Print Split(strVal, ".")(0) & "." & Left(Split(strVal, ".")(1), 2) 
Else 
    Debug.Print dVal 
End If 
6

Round函數使用Banker的四捨五入法,也稱爲「循環」,它將向上或向下舍入五舍五入;使用傳統舍入舍入,使用格式)。

如果你想截斷沒有四捨五入的值,那麼就沒有必要使用字符串作爲公認的答案 - 只是用數學:

Dim lDecimalPlaces As Long: lDecimalPlaces = 2 
Dim dblValue As Double: dblValue = 2.345 

Dim lScale = 10^lDecimalPlaces 
Dim dblTruncated As Double: dblTruncated = Fix(dblValue * lScale)/lScale 

這就產生了「2.34」。

+0

修復功能對我的情況非常有幫助! – carlossierra 2016-08-04 22:43:07

+1

我忘記了銀行家的四捨五入。 +1儘管居高臨下「只用數學」刺拳。爲了只顯示OP請求的數字,如果你不太關心舍入,Format()是作業的工具,並且比Fix()(或Int()更簡單,相當於Fix()對於正數)。但是,有些情況下,銀行家的四捨五入會引起用戶疑問並需要更復雜的轉換。 – GlennFromIowa 2017-02-10 00:10:15

4

您可以使用Int()函數。 Debug.print Int(1.99543)

或更好:

Public Function Trunc(ByVal value As Double, ByVal num As Integer) As Double 
    Trunc = Int(value * (10^num))/(10^num) 
End Function 

所以,你可以使用Trunc(1.99543, 4) ==>result: 1.9954

0

那麼有趣的故事。我正在搞一個快速的VB轉換功能。我只是想將一個double截斷成一個整數。

value = Int(83.768) 
value == 83 

真棒,在VB實際工作的東西。

哎呀,我忘記了它不會與負數

value = Int(-83.768) 
value == -84 

工作...是的,這只是發生了。 VB使用銀行家舍入。

Public Function Trunc(ByVal value As Double) As Integer 
    ' Truncate by calling Int on the Absolute value then multiply by the sign of the value. 
    ' Int cannot truncate doubles that are negative 
    Trunc = (Abs(value)/value) * Int(Abs(value)) 
End Function 

如果你想具體小數做什麼Makah與各地值ABS只有這樣做了詮釋可以正常截斷。

Public Function Trunc2(ByVal value As Double, Optional ByVal num As Integer = 1) As Double 
    ' Truncate by calling Int on the Absolute value then multiply by the sign of the value. 
    ' Int cannot truncate doubles that are negative 
    Dim sign As Integer 
    sign = Abs(value)/value 
    Trunc2 = sign * (Int(Abs(value) * (10^num))/(10^num)) 
End Function