PDA

Ver la Versión Completa : REdondeo al alza


anggar
25/03/12, 21:16:48
Hola a todos

Estoy intentando terminar un programita y para ello solo me falta hacer esto
necesito redondear una variable

he usado la representacion sin decimales pero eso no vale

ya que los redondeos normales lo que hacen es redondear al alza si los decimales pasan de 5 y a la baja si bajan de 5

eso no me sirve lo que necesito si la variable vale 5,0 que de 5
y si vale 5,1 5,3 5,7 o 5,9 que de 6

lo que intento es quitarle los decimales y hacer

cifra
cifra sin decimales
si decimales es diferente de 0 cifra=cifra+1
sino cifra=cifra

y ya lo presento sin decimales con string format

he intentado ver como quito los decimales con algo como parse o math.round pero no me sale, no encuentro ejemplos

alguien me puede ayudar
Gracias a todos.

kriogeN
25/03/12, 22:13:08
Mete la variable en un entero casteandola y te debe funcionar, algo así:

Decimal numeroConDecimales = ..... ;
int numeroSinDecimales = (int) numeroConDecimales;

anggar
25/03/12, 22:49:11
De nuevo muchas gracias KrioGen
estab intentando eso pero los parentesis los ponia al otro nuemro y no me salia
Gracias de nuevo.

Saludos.

KrLx_roller
26/03/12, 00:00:56
No sabía que "casteando" un decimal redondeara al alza. Mira que no fijarme en eso...

Cada día se aprende algo nuevo :)

Enviado desde mi LG-P970 usando Tapatalk

kriogeN
26/03/12, 00:17:59
No sabía que "casteando" un decimal redondeara al alza. Mira que no fijarme en eso...

Cada día se aprende algo nuevo :)

Enviado desde mi LG-P970 usando Tapatalk

No redondea al alza, lo que hace es quitar la parte decimal y dejar sólo la entera, así que precisamente hace todo lo contrario.

Pero lo que él quería saber era precisamente eso, como obtener la parte entera, luego a eso ya tendrías que comprobar si hay parte decimal o no y si la hay sumarle 1 al número entero.

anggar
27/03/12, 10:56:58
Lo que he hecho es lo siguiente:

double parteentera;
double decimal;




parteentera=(int)dientes;
decimal=dientes-parteentera;


if (decimal>0) dientes=dientes+1;

dientes era tambien double pero fuera del metodo.
y funciona perfectamente

Gracias :elmejor:

pmaicas
27/03/12, 10:58:21
int redondeo_al_alza(float valor)
{
return (int)valor == valor ? valor : valor + 1
}


de nada.