Precisión decimales

23/03/2007 - 12:43 por AE | Informe spam
Hola a todos,

tenog una aplicación web donde hago un cálculo de porcentaje, más o menos así:

foreach...

int numTareas = listaDatosTareas[numSeries-1].NumeroTareas;
double valor1 = ((double)numTareas / (double)totalNumeroTareas);

string sValor = (Math.Round(valor1, 2)).ToString("p1");
double porcentaje = valor1 * (double)100;

string sPorcentaje = (Math.Round(porcentaje, 2)).ToString();

serie.TituloSerie = "" + sPorcentaje.ToString().Replace(",",".") + "% ";


El caso que obtengo cuatro porcentajes, y hago la suma de ellos y obtengo un
99,99. Quisiera saber si hay manera de obtener la máxima precisión posible
para este caso.

El valor del porcentaje en principio se mostraría con 2 decimales así: 49,17%

Saludos y gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
23/03/2007 - 14:22 | Informe spam
"AE" wrote in message
news:
El caso que obtengo cuatro porcentajes, y hago la suma de ellos y obtengo
un
99,99. Quisiera saber si hay manera de obtener la máxima precisión posible
para este caso.

El valor del porcentaje en principio se mostraría con 2 decimales así:
49,17%



Deberías usar el tipo "decimal" en lugar de "double". El tipo double es
inherentemente impreciso para este fin, ya que guarda el valor en base 10
convertido a base 2, y hay valores que expresados en base 10 tienen un
número finito de decimales pero que al convertirlos a base 2 tienen
infinitos decimales. Como no caben infinitos decimales en el double, los
trunca, y al convertir ese valor de vuelta a base 10 no sale exactamente el
valor inicial. El tipo System.Decimal no tiene este problema, y te dará
valores exactos.
Respuesta Responder a este mensaje
#2 Octavio Hernandez
23/03/2007 - 15:36 | Informe spam
Hola,

No obstante lo que ha dicho de manera excelente Alberto, si cambias a
decimal y sumas esos
cuatro porcentajes (que teóricamte deben sumar 100) después de redondear
cada uno a dos
dígitos de precisión, puede que de todos modos sigas obteniendo 99,99...

Porcent. original Redondeado a dos dec.
25,004 --> 25,00
25,004 --> 25,00
25,004 --> 25,00
24,988 --> 24,99
SUMA 100,00 99,99

El "problema" está por supuesto en el redondeo a dos cifras para la
presentación de los porcentajes.

Slds - Octavio


"AE" escribió en el mensaje
news:
Hola a todos,

tenog una aplicación web donde hago un cálculo de porcentaje, más o menos
así:

foreach...

int numTareas = listaDatosTareas[numSeries-1].NumeroTareas;
double valor1 = ((double)numTareas / (double)totalNumeroTareas);

string sValor = (Math.Round(valor1, 2)).ToString("p1");
double porcentaje = valor1 * (double)100;

string sPorcentaje = (Math.Round(porcentaje, 2)).ToString();

serie.TituloSerie = "" + sPorcentaje.ToString().Replace(",",".") + "% ";


El caso que obtengo cuatro porcentajes, y hago la suma de ellos y obtengo
un
99,99. Quisiera saber si hay manera de obtener la máxima precisión posible
para este caso.

El valor del porcentaje en principio se mostraría con 2 decimales así:
49,17%

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