2010-02-04 21 views
5

hay algo extraño sucediendo con mi informe generado en SQL Server Reporting Services y espero no ser demasiado estúpido. Uso la función Round para obtener enteros. A veces, un 4.5 redondeará a 4 y un 5.5 redondeará a 6. ¿Esto se debe al método de redondeo? Estoy usando esto:SQL Server Reporting Services Round() función

Round(Fields!GroupAverageAssessment.Value,0) 

¿Cómo puedo hacer un redondeo normal (4,5 a 5, 3,5 a 4, 6,5 a 7 y así sucesivamente ...)

Gracias

+1

Qué tipo de datos es su campo original? Un tipo de datos flotante puede parecer 4.5, pero realmente ser 4.49999999999 o algo así y el 5.5 podría realmente ser 5.500000000000001 – HLGEM

+0

Si * algunas veces * en "a veces un 4.5 redondeará a 4 y un 5.5 redondeará a 6" es en realidad * todo el tiempo * , entonces usa el redondeo del banquero. –

+0

Gracias, el campo se define como Doble, por lo que ese no debería ser el problema. Intentaré alejarme del redondeo de Zero. –

Respuesta

13

Suena como round to even, también conocido como redondeo bancario.

La otra opción es "lejos de cero", que es lo que quiere:

Round(4.5, 0, MidpointRounding.AwayFromZero) 
+0

Respuesta actualizada: acaba de darse cuenta de que AwayFromZero es lo que desea. –

+0

Gracias, intentaré esto. Me quedé desconcertado porque leí la documentación y cuando probé MidpointRounding.AwayFromZero el código fue subrayado como incorrecto. De todos modos, voy a intentarlo ... –

+0

Awayfromzero funcionó para mí, pero el rojo subrayado todavía estaba allí. ¿Dónde coloco el sistema de importación? Gracias por la ayuda. –

2

Utilice la opción MidpointRounding.AwayFromZero:

Round([calculated number], [num decimal places], MidpointRounding.AwayFromZero) 
+0

Gracias, intentaré esto y te lo haré saber. –

Cuestiones relacionadas