Comunidad de diseño web y desarrollo en internet online

dos decimales maximo

Citar            
MensajeEscrito el 11 Dic 2008 09:52 am
Buenas,

Necesito saber como hacer que un valor resultante de una operación que puede tener más de dos decimales, se redondee a dos decimales como máximo.

Por ejemplo, si me da como resultado 34,12345, que el valor me lo redondee a 34,12.

Muchisimas gracias y feliz navidad

Por boryi

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 11 Dic 2008 01:08 pm
Math.round() redondea al entero más cercano, así que multiplicas por 100 para pasar los 2 primeros decimales a la parte entera. Luego vuelves a dividir por 100 para dejarlos donde estaban.

Código :

Math.round(numero*100)/100;

Por Aardvark

5 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 11 Dic 2008 01:21 pm
hay bueno, la verdad una vez me encontre con esa situacion y le busque a la clase nativa Math y nada de nada, asi que esto fue lo que hice:

Código :

 
var decimales:Number = 37428.232343453437457;
decimales = Math.floor(Math.round(decimales * 100))/100;
trace(decimales);//37428.23

si lo metemos en una funcion queda asi:

Código :

var decimales:Number = 37428.232343453437457;
trace(redondear(decimales, 2));//37428.23
function redondear( numero:Number, n:Number ):Number
{
   return Math.floor(Math.round(decimales * (10 * n)))/(10 * n);
}

Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

msie7
Citar            
MensajeEscrito el 12 Dic 2008 07:33 am
hola LongeVie:

Como utilizo este escript, lo pego en el fotograma o en el boton, y como lo modifico para que me funcione??

Yo tego una caja de texto que se llama resultado, y aqui el resultado de la operación me da 5158.1076 y quiero que me de solo 5158.10.

Gracias por todo

Por boryi

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Dic 2008 08:12 am
ha ok ok, mira primero, suponiendo que todo este en el _root, lo pegas en el primer fotograma, asi:

Código :

function redondear( numero:Number, n:Number ):Number
{
   return Math.floor(Math.round(decimales * (10 * n)))/(10 * n);
}


donde quiera que sea que hagas resultado.text = algunvalor , ahi deberas poner esto:

Código :

resultado.text = _root.redondear(Number(algunvalor), 2);


en donde algunvalor, es el valor que quieres redondear, supon que lo que quieres redondear es la misma, caja de texo, entonces seria asi

Código :

resultado.text = _root.redondear(Number(resultado.text), 2);


suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 12 Dic 2008 08:35 am
Gracias LongeVie, preo no me ha que dado claro donde pongo la llamada a la función

resultado.text = _root.redondear(Number(resultado.text), 2);

pues todo lo tengo en 1 fotograma, que pongo la función y la llamada en el mismo fotograma o donde??

Por boryi

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Dic 2008 09:02 am
ok, la funcion la puedes poner en el priemr fotograma hasta el incio o hasta el final, no importa, de todas formas flash trabaja primero las declaraciones de funciones y luego el resto del script, ahora lo de:

Código :

resultado.text = _root.redondear(Number(resultado.text), 2);


eso depende de donde resultado obtenga su valor, me entiendes?, supon que tu presionas un boton que hace un calculo y que hipoteticamente, este es el codigo del boton:

Código :

on(release){ _root.resultado.text = 567 / 2344 * 12 / 1223; }

entonces es ahi en donde debes hacer la llamda a la funcion quedando esto:

Código :

on(release){ _root.resultado.text = _root.redondear(Number( 567 / 2344 * 12 / 1223), 2); };


si me explique?? bueno, ahora supon que el usuario mete el valor directamente en el campo de texto, entonces tendrias que hacer una validacion, tendrias que poner otro codigo, dime es ese tu caso?

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 12 Dic 2008 09:33 am
no ,ese no es mi caso, no me quiero complicar tanto la vida, pero pego la llamada a la función en el boton que me calcula el resultado y sigue sin salirme.

Esta llamada:

resultado = redondear(Number( 567 / 2344 * 12 / 1223), 2);

la pego en el boton que me calcula el resultado y sigue sin salirme.

Gracias por todo y perdona que sea tan pesado.

Por boryi

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Dic 2008 09:41 am
ok, resultado es el nombre de instacia de un TextField???, entonces debe ser asi
resultado.text =
seria entonces asi, selecciona tu boton, pulsa f9, ahi escribe

Código :

on(release)
{
 _root.resultado.text = String( _root.redondear(Number( 567 / 2344 * 12 / 1223), 2) );
}


si eso no funciona, entonces contactame por messenger, sera mas rapido asi. suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 12 Dic 2008 10:46 am
Una pregunta a LongeVie, habías leido mi respuesta antes?

Por Aardvark

5 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 12 Dic 2008 12:06 pm
sip, es muy buena respuesta, porque lo mencionas?

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 12 Dic 2008 12:50 pm
Nada, me pareció curioso que ambas respuestas fueran casi iguales.

Por Aardvark

5 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 12 Dic 2008 01:02 pm
jaja eso fue una especie de reclamo de derechos de autor??, jaja, ok, a donde te envio el cheke? bueno no te preocupes, seran casi identicos porque esa es la unica solucion para llegar al efecto, creeme tengo mucho tiempo programando, no solo en AS, programo en java, asp, .net c#, php, y lenguajes mas viejos, como el c++, qbasic y ensamblador, entre otros, y cada lenguaje ofrece una funcion nativa para eso de redondear decimales, si use una funcion es para simular, lo que harian las funciones de los lenguajes antes mencionados, la verdad cuando me decidi a contestar este post, lo abri, y planee un poco mi respuesta la probe y cuando lo envie, ya estaba la tuya, no fue mi intencion, de haber visto tu respuesta no hubiera contestado, no contesto post resueltos, puedes chekarlo en mi historial, ademas, cuando contesto lo hago con ejemplos de uso, tambien puedes chekarlo, por eso me tardo, aun asi, despues de saber lo que te acabo de escribir amigo, aun asi, te envio una sincera disculpa si es que mis acciones te han creado un conflicto, y bueno, siempre libero o publico mis codigos para que alguien mas los pueda usar, como los quiera usar, no es eso lo que hacemos aqui todos??

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 12 Dic 2008 03:02 pm
Perdona, no quería enfadarte. Te pido disculpas.

Por Aardvark

5 de clabLevel



Genero:Masculino  

Barcelona

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.