Si estamos trabajando con la cultura español en net donde el separador decimal es la coma y hacemos esta operacion desde net:
string pepe = "000000050.00";
double nPe = Convert.ToDouble(pepe);
me queda en :5000.0 y esta mal pero porque esta mal?
la razon es la cultura del usuario, no hay un separador
decimal coma en la cadena entonces toma todo como enteros
y en vez de tomar 50 pesos, toma 5000 pesos
suele ocurrir este tipo de cosas y me ha pasado y por eso lo comento
Solución:
1- se podria trabajar desde el inicio del programa con cultura invariant
pero no lo recomiendan en algunos lugares de la web ya que puede afectar otros
tipos de operaciones
2- lo mejor seria trabajar con una culltura desde el inicio del sistema
ya sea ingles o español y si hace falta este tipo de operaciones donde no importe la culturadel usuario usamos la sobrecarga con el provider en invariant asi:
string pepe = "000000050.00";
double nPe = Convert.ToDouble(pepe, System.Globalization.CultureInfo.InvariantCulture);
y podemos obtener el valor deseado (50.0 ) en la variable double aunque la cultura del usuario
sea español
Logicamente este error no hubiese ocurrido y andaria bien si la cultura es inglesa
ya que ahi si el separador decimal es punto y lo encontraria en la cadena y andaria
de las dos formas codificadas
No hay comentarios:
Publicar un comentario