Foros del Web » Programando para Internet » Javascript »

Separar Numero , en parte entera y parte decimal

Estas en el tema de Separar Numero , en parte entera y parte decimal en el foro de Javascript en Foros del Web. Hola gente !!! Lo que pretendo hacer es lo siguiente, ingreso un numero por ejemplo numero= 1.45 Y necesito separar la parte entera en una ...
  #1 (permalink)  
Antiguo 05/09/2008, 06:21
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Pregunta Separar Numero , en parte entera y parte decimal

Hola gente !!!

Lo que pretendo hacer es lo siguiente, ingreso un numero por ejemplo
numero= 1.45

Y necesito separar la parte entera en una variable y la parte decimal por otra parte.

para la parte entera use:
Código PHP:
parte_entera=parseInt(numero); 
Lo que no se como hacer es como tomar la parte decimal, Alguien sabe como seria ?

Saludos, y Gracias
__________________
Mail: [email protected]
  #2 (permalink)  
Antiguo 05/09/2008, 06:29
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Separar Numero , en parte entera y parte decimal

¿Qué te parece parte_decimal = numero - parte_entera?
  #3 (permalink)  
Antiguo 05/09/2008, 06:34
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Separar Numero , en parte entera y parte decimal

que tal la funcion split?

arr = numero.split(".");

entero = arr[0];
decimal = arr[1];
__________________
My path is lit by my own fire, I only go where I desire
  #4 (permalink)  
Antiguo 05/09/2008, 07:01
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Separar Numero , en parte entera y parte decimal

@venkman: que salame que soy, como no me di cuenta jajajaja . Muy bien !!!
@foreverOdd: claro con split ,buena funcion !!!!!

Me doy cuenta que voy a sert novato por largo tiempo :D

Saludos !!!
__________________
Mail: [email protected]
  #5 (permalink)  
Antiguo 05/09/2008, 09:26
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Separar Numero , en parte entera y parte decimal

Hola de nuevo:
Estoy probando la funcion, porque necesito separarlo de manera que las 2 partes queden enteras, por eso estoy tratando de usar la funcion split, pero algo no anda bien o no hice bien.
La funcion la tengo asi:
Código PHP:
function calculo()
{
cantmparseFloat(document.form[m8].value);  //tomo el valor
alert("Numero: "+cantm); // muestro el valor

arr cantm.split(".");  // declaro el array 
enteroarr[0];
decimal arr[1];

alert("Parte Entera: "+entero); // muestro la parte entera
alert("Parte Decimal: "+decimal); // muestro la parte decimal, como otro entero 
Que sera que esta mal ? no me puedo dar cuenta...

Saludos !!!
__________________
Mail: [email protected]

Última edición por colote; 05/09/2008 a las 09:27 Razón: edit
  #6 (permalink)  
Antiguo 05/09/2008, 09:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Separar Numero , en parte entera y parte decimal

Es que cantm está almacenando un tipo Float, por lo que no posee el método split(), lo que puedes hacer es usar directamente el value del input sin hacer la conversión (parseFloat) o volver a convertir a cadena usando String().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 05/09/2008, 12:39
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Separar Numero , en parte entera y parte decimal

Es verdad, Problema resuelto !!!!!

Gracias David !!!!!

Saludos !!!
__________________
Mail: [email protected]
  #8 (permalink)  
Antiguo 10/09/2008, 17:43
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Separar Numero , en parte entera y parte decimal

/*================================================= =======
Función que permite capturar una cantidad diciendole cuantos enteros y cuantos decimales permitir
Cuando ha llegado al límite no deja escribir; evalúa las condiciones en cada teclazo.
Autor: Roberto CDM - [email protected]
================================================== ========
Recibe los parámetros:
e => evento click,
ent => # enteros deseados -considerar el punto-
dec => # decimales deseados
*/


function EntDecimal(e,ent,dec)

//Esto permite que solo capturen números y el '.'
chars= "1234567890.";
e = window.event;
if(chars.indexOf(String.fromCharCode(e.keyCode))==-1) window.event.keyCode=0;

//En cada teclazo evalúa lo que tiene tu textbox
var num;
num = document.entry.txtLogin.value;

//Extraemos la parte entera var cantidad = num.split(".");
var entero = cantidad[0];

//Validamos que no pase de la cantidad deseada
if (entero.length >= ent){
return (window.event.keyCode=0);}

//Saco la parte decimal para compararla si ya superó el límite permitido
var t=num+"";
num = parseFloat(t.substring(0,(t.indexOf(".")+dec+1)));
var res;
var pos = t.toString().indexOf(".");

if (pos == -1){
res = String(0);
}else{
res = String(t).substring((pos+1), t.length);}

//Si aún es menor al límite, te deja avanzar
if (res.length <= dec-1){
return (num);}
else{ //Cuando es igual o ya se pasó no te deja escribir más allá
return (window.event.keyCode=0);}
}
</SCRIPT>

HTML:

<form name="entry" action="Default.aspx" method="post">
Capture una cantidad de hasta 3 enteros y 5 decimales (ver código fuente):<br/><br/>
<input name="txtLogin" type="text" onKeyPress="EntDecimal(event,4,5);"/>
</form>

Última edición por stakabrown; 11/09/2008 a las 09:33
  #9 (permalink)  
Antiguo 10/09/2008, 19:03
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Separar Numero , en parte entera y parte decimal

jaja... yo en tu lugar usaría expresiones regulares para detectar que solo haya números y el punto. Por cierto, si los eventos no llevan mayúsculas. onkeypress no onKeyPress. Saludos.
__________________
twitter: @imbuzu
  #10 (permalink)  
Antiguo 11/09/2008, 09:30
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Separar Numero , en parte entera y parte decimal

Hola.

Pues es que era para un amigo que trabaja con JSP y yo desarrollo en .NET; ahí sí me vienen bien las Regular Expresions por eso lo hice así de básico.
Por cierto la sintxis de onKeyPress sí es válida en aspx.

Si tienes alguna sugerencia para hacerlo con RegEx te agradeceré

Salu2
  #11 (permalink)  
Antiguo 11/09/2008, 09:56
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Separar Numero , en parte entera y parte decimal

Cita:
Iniciado por stakabrown Ver Mensaje
Por cierto la sintxis de onKeyPress sí es válida en aspx.
Hola:

¿Podrías postear un enlace que corrobore tu afirmación? Se me hace un poco raro que en XHTML los elementos deban ir en minúscula, y que sólo por el hecho de procesarlo en el servidor con ASP las reglas cambien...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #12 (permalink)  
Antiguo 11/09/2008, 10:16
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Separar Numero , en parte entera y parte decimal

Creo que tienes razón, los eventos deben escribirse en minúsculas; fue un error de mezclar html con vb.net.

Por cierto encontré la RegEx que aplicaría para ese ejemplo:
http://regexlib.com/REDetails.aspx?regexp_id=1049


Pattern Title
Expression:

^(?=.*[1-9].*$)\d{0,7}(?:\.\d{0,9})?$


Description
Allows up to seven digits to the left and up to nine digits to the right of an optional decimal place. Leading zeros on the left of the decimal are accepted. Only positive values are accepted.

Matches
1 | 0123456.123456789 | .123456789

Non-Matches
.0123456789 | 0.0 | -1
  #13 (permalink)  
Antiguo 11/09/2008, 19:10
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Separar Numero , en parte entera y parte decimal

Bien, Gracias por compartir el dato! Por cierto, que no las expresiones regulares son iguales sin importar el lenguaje? Corrijanme si me equivoco.
__________________
twitter: @imbuzu
  #14 (permalink)  
Antiguo 12/09/2008, 08:54
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Separar Numero , en parte entera y parte decimal

Hola:

Cita:
Iniciado por buzu Ver Mensaje
Bien, Gracias por compartir el dato! Por cierto, que no las expresiones regulares son iguales sin importar el lenguaje? Corrijanme si me equivoco.
Pues sí, creo que es universal para todos los lenguajes y aplicaciones que las interpretan (PHP, javascript, perl, grep, editpad, editplus...), pero hay pequeñas diferencias. Por ejemplo la implementación de javascript 1.2 (según leo aqui) (IE6 creo que la tiene como última versión) no interpreta bien las repeticiones no ambiciosas (existe un término para esto, pero no me sale). Pero 1.5 y siguientes sí (FF3, y creo que 2) El ejemplo sería este:

Código:
Expresión   ==>  .+\.  ==> Cualquier carácter al menos una vez y luego un punto (ambiciosa)
String      ==>  "Hola que tal. Yo estoy muy bien."
Captura     ==>  "Hola que tal. Yo estoy muy bien."

Expresión   ==>  .+?\.  ==> Cualquier carácter al menos una vez y luego un punto (no ambiciosa)
String      ==>  "Hola que tal. Yo estoy muy bien."
Captura     ==>  "Hola que tal."
Las no ambiciosas capturan lo justo, lo mínimo. Pero las ambiciosas capturan todo lo que pueden (lo máximo).

Tampoco soportan las lookbehind assertion (no encuentro un link decente donde lo mencione). Lo escribí en este post: http://www.forosdelweb.com/f13/expre...9/#post2197877. Esa expresión que nos trae stakabrown tiene una aserción predictiva (lookahead, AKA que y vaya delante de x en x(?=y) ).

Yo habría escrito algo simple, como esto:
^-?\d+(\.\d+)?$
Permitiendo números negativos, y opcionalmente decimales:
Código:
(en negrita las que sí pasan la expresión regular)
1
1.223
.123
0.0
0.111
12312.00
-123.23
-456
3as2
Hay pequeñas variaciones sobre cosas avanzadas como las aserciones esas (que poco se usan), pero básicamente la sintaxis es común.





EDITO: He encontrado un link decente que explica qué tiene y qué no tiene cada implementación de las expresiones regulares: http://www.regular-expressions.info/refflavors.html
Mirad la columna de ECMA. Cosas como las condicionales no son soportadas (y serían muy dificiles de simular supongo, lo intenté y desistí). También da información sobre qué programas o lenguajes pueden entender una expresión regular.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 12/09/2008 a las 09:00 Razón: Link interesante sobre expresiones regulares.
  #15 (permalink)  
Antiguo 12/09/2008, 09:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Separar Numero , en parte entera y parte decimal

Vientos, muchas gracias x la aportación.
Referente a si las RegEx son iguales para todos los lenguajes; sí lo son, la implementación es la que no tengo claro como se haga en JSP.

Ejemplo en .NET para validar la fecha en un textbox:

<asp:TextBox ID="txtFecProcesamiento" runat="server" Width="75px" MaxLength="10"></asp:TextBox>

<asp:RegularExpressionValidator
ID="RegExFecProcesamiento"
ForeColor="#FF0000"
ValidationExpression="(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}"
EnableClientScript="true"
SetFocusOnError="true"
ControlToValidate="txtFecProcesamiento"
runat="server">
* La fecha de procesamiento debe estar en el formato: dd/mm/aaaa
</asp:RegularExpressionValidator>
  #16 (permalink)  
Antiguo 12/09/2008, 12:21
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Separar Numero , en parte entera y parte decimal

Ok, buen aporte derkenuke.
__________________
twitter: @imbuzu
  #17 (permalink)  
Antiguo 26/11/2009, 08:04
 
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
tomar la parte decimal de un numero decimal

Hola, quisiera que me ayuden con un poco de programacion...como puedo hacer para que de un numero decimal.. ejemplo: 0.25, me tome solo la parte decimal, es decir... '25' y mostrarlo en pantalla? necesito con urgencia una ayudita...desde ya muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:18.