2012-05-17 29 views

Respuesta

24

De lo que recuerdo, use la función Int(). ex int (2.99) = 2; int (2.1) = 2 y así sucesivamente. google para más información!

+0

+ 1 :) Sí, el equivalente de Math.floor() es de tipo int() –

+2

Tenga en cuenta que Int (-5,8) dará -6, que quizás no sea el esperado. –

+0

Estoy usando esto para probar si un doble es un entero es 'si x = int (x) luego 'entero si if' ¿Hay una mejor manera, sin tener que lanzar un error? – OfficialBenWhite

3

Es Round()

Sub Sample() 
    Dim dval As Double 
    dval = 1.12345 

    Debug.Print Round(dval, 0) 
End Sub 

0 anterior especifica el número de decimales que desee.

EDIT:

Albi Patozi es correcto. El equivalent de Math.Floor() es int(). Tenía la impresión de que solo querías devolver un número sin los decimales. Pero entonces miré hacia arriba http://www.w3schools.com/jsref/jsref_floor.asp

El método de piso() redondea un número hacia abajo hasta el número entero más próximo, y devuelve el resultado.

'~~> 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 

RESULTADO

ROUND() ~~ INT()

1 ~~ 0

0 ~~ 0

5 ~ ~ 5

5 ~~ 5

-5 -6 ~~

-6 -6 ~~

+1

muchas gracias por la respuesta informativa –

3

tener cuidado de que CInt() redondea el número en realidad, pero Int() no lo hace .

CInt(1.6) ~~ 2 
Int(1.6) ~~ 1 
Cuestiones relacionadas