Spanish (SOLUCIONADO) Extrar parte entera de un numero decimal

cas6678

Active Member
Licensed User
Quiero extrar la parte entera de un numero decimal, por ejemplo que al poner 19.5 me devuelva 19.

He probado con floor, va bien para las positivos pero cuando pongo -19.5 me devuelve -20 y yo necesito conseguir -19.

He pensado en poner floor(numero)+1 pero sucede que entonces al poner un entero negativo como -19 me devuelve -18.

Ideas???
 

José J. Aguilar

Well-Known Member
Licensed User
Prueba Ceil en negativos a ver:

Ceil (Number As Double) As Double

Returns the smallest double that is greater or equal to the specified number and is equal to an integer.

Floor (Number As Double) As Double

Returns the largest double that is smaller or equal to the specified number and is equal to an integer.
 

cas6678

Active Member
Licensed User
Tienes razon funciona. Yo buscaba funcion que sirviera para ambos, positivos y negativos, y por eso no encontraba salida.

En cualquier caso me ha sido muy util tu respuesta.

Muchas gracias.
 

José J. Aguilar

Well-Known Member
Licensed User
Otra opción es que trastees un poco con

O que te crees una función, algo como:
B4X:
Private Sub cInt(o As Object) As Int
    If o > 0 Then
        Return Floor(o)
    Else
        Return Ceil(o)
    End If
End Sub
O bien que lo pases a un string y te quedes con la parte antes del punto.

saludos,
 
Top