• Jueves 30 de Mayo de 2024, 12:52

Autor Tema:  Sentencia Para Reconocer Un Numero Real  (Leído 3946 veces)

JohnAlexander

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Sentencia Para Reconocer Un Numero Real
« en: Lunes 10 de Septiembre de 2007, 19:16 »
0
Gracias por su ayuda. Estoy trabajando en un proyecto de fraccionarios relativamente sencillo. Al ingresar un conjunto de números debo admitir solo los números en el rango de los enteros, los números decimales no. Lo que quiero saber es si hay alguna funcion o sentencia que me permita diferenciar entre un número entero y uno decimal. El número lo capturo en una caja de texto y lo asigno a una variable numerica.

De una forma mas simple: En el textbox no debo admitir nigun numero decimal solo enteros.

trabjo con visula basic 6.0

De nuevo gracias por su ayuda.

Scherzo

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
    • http://www.mma-spain.com
Re: Sentencia Para Reconocer Un Numero Real
« Respuesta #1 en: Lunes 10 de Septiembre de 2007, 19:30 »
0
Hola, entiendo que estás usando el mismo tipo de datos para ambos números (si no bastaría con consultar el tipo de datos).

Supongo que a lo que te refieres es a que te va a llegar una serie de números y lo que quieres saber es cuáles tienen una parte decimal igual a 0 y cuáles no, ¿verdad?

Por poner un ejemplo, imagina que tenemos esto:

4,00
5,30
12,65
7 (equivaldría a 7,00)

Entonces lo que querrías es quedarte con el 4,00 y el 7,00, ¿no? (que equivalen al 4 y el 7 enteros).

Bien, suponiendo esto y que se han hecho las comprobaciones pertinentes para asegurarte de que lo ha escrito el usuario es un número válido, lo que puedes hacer es lo siguiente:

Código: Text
  1.  
  2. Dim fNumero as Float
  3.  
  4. If (fNumero - Int(fNumero)) = 0.0 Then
  5.     'Número entero
  6. Else
  7.     'Número con decimales
  8. End If
  9.  
  10.  

Es decir, lo que hacemo es coger el número que nos da el usuario (todos en principio son del tipo float) y le restamos su parte entera. Si nos da un CERO es porque la parte entera y el número completo son iguales, lo que indicaría que no tiene parte decimal. Si sale cualquier cosa distinta de cero es porque la parte decimal no era nula, es decir, tenía decimales.

Espero que te sirva la sugerencia, hay múltiples formas de hacerlo, ésta no es más que una de ellas.

Saludos

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Sentencia Para Reconocer Un Numero Real
« Respuesta #2 en: Sábado 15 de Septiembre de 2007, 13:44 »
0
La función int(número), retira los decimales y para convertir el string del textbox a cifras usa val(cadena).

Otra forma es controlar con una función, por ejemplo como esta:

Código: Text
  1.  
  2. Private Function comprobarValor(texto As String) As Double
  3.     Dim c As String, cadena As String
  4.  
  5.     For i = 0 To Len(Texto)
  6.         c = Mid$(texto, i, 1)
  7.         If (c > Asc(48)) And (c < 57) Then
  8.             cadena = cadena & c
  9.         End If
  10.     Next
  11.     comprobarValor = cdbl(cadena)
  12. End Function
  13.  

...pero recuerda limitar el número de caracteres al textbox, para evitar desbordamientos... en cualquier caso si has de usar números lo mejor es que uses un control slider ya que puedes limitar el rango menos y mayor, no hay posibilidad de error, tampoco hay que chequear por caracteres no válidos.. (el scrollbar tanto el vertical como el gorizontal tienen limitado su rango al de un entero (32767) el slider no tiene esa limitación, además puede orientarse tanto vertical como horizontal...
«Ma non troppo»
----> ModoVacaciones = False<----