Ehu*_*udz 12 double excel vba decimal-point excel-vba
我需要截断我的double值的小数位数,以便在文本框中显示.如何用vba实现这一目标?
Sid*_*out 12
您可以使用ROUND用于FORMAT在VBA
例如,显示2位小数
Dval = 1.56789
Debug.Print Round(dVal,2)
Debug.Print Format(dVal,"0.00")
Run Code Online (Sandbox Code Playgroud)
注意:上面会给你1.57.因此,如果您正在寻找,1.56那么您可以将Dval存储在一个字符串中,然后执行此操作
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
Run Code Online (Sandbox Code Playgroud)
Gar*_*ill 10
如果你想对值进行舍入,那么你可以使用Round函数(但要注意VBA的Round函数使用Banker的舍入,也称为round-to-even,它将向上或向下舍入5;使用传统舍入舍入,使用格式).
如果你想在没有舍入的情况下截断值,那么就不需要像接受的答案中那样使用字符串 - 只需使用数学:
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
Run Code Online (Sandbox Code Playgroud)
这产生"2.34".
您可以使用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
Run Code Online (Sandbox Code Playgroud)
所以你可以使用Trunc(1.99543, 4)==>result: 1.9954
| 归档时间: |
|
| 查看次数: |
52860 次 |
| 最近记录: |