Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayuda

Renegado22

Bovino maduro
Desde
7 Feb 2010
Mensajes
215
me podrian ayudar, estoy haciendo una aplicacion en la cual quiero redondear numero a entero o 0.50
por ejemplo

45.23= 45.00
45.40=45.50
45.70=45.50
45.80=46.00

es en c#
 
Con una substring apartir del punto. y un switch '< .50' y '>.50'. Búscale en google como hacer la substring.
 
El redondeo no funciona como lo planteas, así que no podrás usar la función round que poseen la mayoría de lenguajes.
Si lo que te piden es el redondeo como tal, primero debes estudiar los conceptos básicos de cifras significativas, y luego las reglas del redondeo. En resumen tu ejemplo debería quedar así:

45.23= 45.00
45.40=45.00

45.70=46.00
45.80=46.00

Si lo que te piden es ese "redondeo" que muestras en el ejemplo, puedes tomar la idea que te dan arriba, comparando lo que viene después del punto en un switch, pero debes tener claro cuales serán los criterios para determinar cuando "redondeas" a 0 o a 0.5. Por ejemplo, ¿45.35 a que lo redondeas? ¿a 45.0 o a 45.5?

Saludos
 
gracias carnalitos encontre una forma de hacerlo ahi les paso el codigo
string input = "25.23";
double sub1,a;
double i;
string sub = input.Substring(input.Length - 3);
string subres = input.Substring(0,input.Length - 2);
a = Convert.ToDouble(sub);
sub1 = Convert.ToDouble(sub);
if (a >= 0 && a <= 0.24)
{
sub1=00;

label1.Text = subres + sub1;
}
else
if (a >= 0.25 && a <= 0.49)
{
sub1 = 50;
label1.Text = subres + sub1;
}
else
if (a >= 0.50 && a <= 0.74)
{
sub1 = 50;
label1.Text = subres + sub1;
}
else
if (a >= 0.75 && a <= 0.99)
{
i = 1.0 - sub1;
i = Convert.ToDouble(input) + i;
label1.Text =i.ToString();

}
 
El código que posteaste cumple, pero solo en cierta parte con lo que deseas.

¿Qué pasa con valores como 25.245?

No hará match con ninguna de las condiciones posteadas.

El código también puede ser mejorado. Si te das cuenta, para la segunda y la tercera comparación se ordena la misma instrucción. Podrías optimizarlo así en una sola condición:

if (a >= 0.25 && a <= 0.74)
{
label1.Text = subres + 50;
}

Saludos
 
No es más "limpio" utilizar un switch en lugar de anidar if's?

De hecho sólo necesitas realizar 3 comparaciones para conseguir lo que deseas.
 
gracias salan buen punto el que me dijiste y para lo de los dijitos despues del punto siempre es dos porque yo tomo el valor dl textbox y tengo la funcion que solo me ponga dos digitos.
y Zephyros es vdd con el switch si es mas limpio pero no lo eh utlizado mucho por lo que para mi se me hizo mejor el if.
Saludos
 
Chale... pues depende, la solucion que te dieron es relativamente practica, yo me acuerdo que restaba o sumaba 0.50 y utilizaba la funcion de ceiling() o floor(). No se si c# conserven esas funciones... pero se me hace mas facil que lo que acaban de hacer....
 
Volver
Arriba