Como hacer un ROUND() de un Float?

01/10/2007 - 20:13 por Paul | Informe spam
Hola,

Existe alguna instrucción para hacer un redondeo de un float, es
decir:
a=3.26844

Si quiero un redondeo de dos digitos:
a=3.69

Gracias

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
01/10/2007 - 21:03 | Informe spam
Hola Paul

Puedes probar a formatear el número mediante su método ToString, pasando
como parámetro la cadena de formato para que realice el redondeo a dos
dígitos, y al mismo tiempo, el valor de retorno de ToString lo conviertes de
nuevo a float mediante su método Parse. Te adjunto un pequeño ejemplo.

//--
float numero1 = 3.26844F;
float numero2 = float.Parse(numero1.ToString("#.##"));
//--

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Paul" wrote:

Hola,

Existe alguna instrucción para hacer un redondeo de un float, es
decir:
a=3.26844

Si quiero un redondeo de dos digitos:
a=3.69

Gracias


Respuesta Responder a este mensaje
#2 Alberto Poblacion
01/10/2007 - 21:06 | Informe spam
"Paul" wrote in message
news:
Existe alguna instrucción para hacer un redondeo de un float, es
decir:
a=3.26844

Si quiero un redondeo de dos digitos:
a=3.69



Una forma de hacerlo es multiplicar por 100, truncar los decimales, y
volver a dividir por 100.

PERO hay que advertir que en algunos casos puede ser imposible redondear
un float a dos decimales en base 10. ¿Por qué? pues porque el float guarda
los decimales en base 2, y existen algunos números que en base 10 tienen
solo dos decimales pero que en base 2 tienen infinitos decimales. Y cuando
intentas guardar "infinitos decimales" en un float, que tiene un número
limitado (alrededor de 24), pues se truncan los que sobran, y si ese valor
lo vuelves a convertir a base 10, pues te sale un valor que no tiene
exactamente los dos decimales que habías tratado de meter originalmente.
Asi que si quieres trabajar de forma exacta con dos decimales, tendrás
que abandonar los tipos binarios inexactos, como el float y el double, y
pasarte a un tipo exacto, tal como el System.Decimal.
Respuesta Responder a este mensaje
#3 arturo.garrido
02/10/2007 - 03:25 | Informe spam
Puedes utilizarl método Math.Round al que le pasas el float y el
numero de decimales que quieres. Ej:
float a=3.26844;
a=Math.Round(a,2);

el valor resultante de a es 3.27

Saludos!
Arturo
http://www.mayeh.com/fakeplastic
Respuesta Responder a este mensaje
#4 Alhambra Eidos Kiquenet
03/10/2007 - 12:06 | Informe spam
Hola,

"el float guarda los decimales en base 2",

y el tipo double y el tipo decimal ??

Saludos.
Respuesta Responder a este mensaje
#5 Alberto Poblacion
03/10/2007 - 13:52 | Informe spam
"Alhambra Eidos Kiquenet"
wrote in message news:
"el float guarda los decimales en base 2",

y el tipo double y el tipo decimal ??



El double, igual que el float, solo que tiene más bits.

En cambio el tipo Decimal guarda todos los dígitos como un número entero,
y guarda por separado la posición de la coma dentro de ese número entero,
con lo cual consigue que se refleje con toda exactitud cualquier número en
base 10 que encaje dentro del rango soportado.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida