Como redondear o truncar un float

08/01/2007 - 18:54 por ANT1 | Informe spam
¿Aguien me puede decir como redondear o truncar un float?

Es decir, si tengo un float con un numero cualquiera de decimales
imponerle que tenga solo dos decimales.

Ej: 12,3456 > 12,34 ó 12,35

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/01/2007 - 19:08 | Informe spam
"ANT1" wrote in message
news:
¿Aguien me puede decir como redondear o truncar un float?

Es decir, si tengo un float con un numero cualquiera de decimales
imponerle que tenga solo dos decimales.

Ej: 12,3456 > 12,34 ó 12,35



float f = 12.3456f;
float redondeado = (float)Math.Floor(f*100)/100;


NOTA: Algunos valores con dos decimales pueden ser imposibles de representar
en un float. Hay que tener en cuenta que el float contiene valores inexactos
que se representan internamente como una mantisa en binario más un
exponente, y algunos valores que tienen dos decimales en base 10 tienen
infinitos decimales en base 2, por lo que no pueden representarse con
exactitud en un float. Si necesitas precisión, utiliza un tipo "decimal" en
lugar de "float".
Respuesta Responder a este mensaje
#2 Octavio Hernandez
08/01/2007 - 23:42 | Informe spam
ANT1,

- El tipo "predeterminado" para cálculos de punto flotante es double.
- Si pones en una expresión una constante literal como 12.3456 será
de tipo double, y si mezclas operandos double y float en una expresión
se obtendrá un double. También si tienes un float y lo pasas como
parámetro a una función que espera un double, el compilador lo
expandirá automáticamente.
- Se recomienda generalmente utilizar double en lugar de float por la
mejor relación precisión/rendimiento.
- Además de la vía que te recomienda Alberto, para redondear puedes
utilizar el método Math.Round(Double, Int32, MidpointRounding)

http://msdn2.microsoft.com/en-us/li...98377.aspx

Te permite incluso especificar (tercer parámetro) el algoritmo de redondeo
a utilizar en caso de que un valor esté en el punto medio entre otros dos.

Slds - Octavio



"ANT1" escribió en el mensaje
news:
¿Aguien me puede decir como redondear o truncar un float?

Es decir, si tengo un float con un numero cualquiera de decimales
imponerle que tenga solo dos decimales.

Ej: 12,3456 > 12,34 ó 12,35
Respuesta Responder a este mensaje
#3 ANT1
09/01/2007 - 09:22 | Informe spam
Gracias a los dos.

De momento he cambiado los float que tenia definidos en mi aplicacion
windows por double y sigue funcionando perfectamente (y es que al estar
asociados a una base de datos que tiene definicion para float, pero no
para double o decimal, pues no sabia si funcionaria).

Con esto he arreglado un problema que me surgia al calcularunos
porcetajes. Y es que sin venir a cuento el número de decimales se me
disparaba. No sabia porque era hasta que vi vuestros comentarios.

Ahora probare con los redondeos, y ya os contare.

Muchas gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida