22

Math.Floor()VBA中的 JavaScript 等价物是什么?此函数应删除所有小数位并仅返回一个整数。

4

5 回答 5

34

我记得使用 Int() 函数。前任

int(2.99) = 2 ; int(2.1)=2

等等。

于 2012-05-17T08:18:21.070 回答
5

请注意 CInt() 实际上会舍入数字,但 Int() 不会。

CInt(1.6) ~~ 2
Int(1.6) ~~ 1
于 2015-05-08T10:21:36.747 回答
4

它是Round()

Sub Sample()
    Dim dval As Double
    dval = 1.12345

    Debug.Print Round(dval, 0)
End Sub

0上面指定了你想要的小数位数。

编辑:

阿尔比帕托齐是对的。的是。equivalent_ 我的印象是您只想返回一个不带小数的数字。但后来我查了http://www.w3schools.com/jsref/jsref_floor.aspMath.Floor()int()

floor() 方法将数字向下舍入到最接近的整数,并返回结果。

'~~> JavaScript floor() Method
'var a=Math.floor(0.60);    ~~> 0
'var b=Math.floor(0.40);    ~~> 0
'var c=Math.floor(5);       ~~> 5
'var d=Math.floor(5.1);     ~~> 5
'var e=Math.floor(-5.1);    ~~> -6
'var f=Math.floor(-5.9);    ~~> -6

Sub Sample()
    Dim dval(5) As Double, i As Long

    dval(0) = 0.6: dval(1) = 0.4: dval(2) = 5
    dval(3) = 5.1: dval(4) = -5.1: dval(5) = -5.9

    For i = LBound(dval) To UBound(dval)
        Debug.Print Round(dval(i), 0); " ~~ "; Int(dval(i))
    Next
End Sub

结果

ROUND() ~~ INT()

1 ~~ 0

0 ~~ 0

5~5

5~5

-5 ~~ -6

-6 ~~ -6

于 2012-05-17T08:19:11.210 回答
2

您还可以从 VBA 调用 Excel 工作表函数之一:

-Application.WorksheetFunction.Floor_Math

-Application.WorksheetFunction.Floor

于 2018-04-02T18:24:16.050 回答
-1

对于正值,VBA 提供Int()并且Fix()在功能上等同于Math.floor(). 但是,对于负值, onlyInt()在功能上等价于Math.floor()Fix()如果您只对获取小数点左侧的值感兴趣,那么VBA 函数可能就是您想要的。

Math.floor(2.8) == 2
Int(2.8) == 2
Fix(2.8) == 2

Math.floor(-2.8) == -3
Int(-2.8) == -3
Fix(-2.8) == -2

Office VBA 参考

整数,修复函数

返回数字的整数部分。

句法

整数(数字)

修复(数量)

所需的 number 参数是 Double 或任何有效的数字表达式。如果 number 包含 Null,则返回 Null。

评论

Int 和 Fix 都删除了 number 的小数部分并返回结果整数值。

Int 和 Fix 的区别在于,如果 number 为负数,Int 返回第一个小于或等于 number 的负整数,而 Fix 返回第一个大于或等于 number 的负整数。例如,Int 将 -8.4 转换为 -9,Fix 将 -8.4 转换为 -8。

Fix(number) 等价于:

Sgn(数字) * Int(绝对值(数字))

于 2019-05-07T18:48:31.217 回答