2012-07-05 48 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