Saltar al contenido

La mejor forma de convertir una cadena en un separador decimal “.” y “,” forma insensible?

Solución:

Puede crear un temporal CultureInfo objeto a utilizar cuando analiza.

// get a temporary culture (clone) to modify
var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo;
ci.NumberFormat.NumberDecimalSeparator = ",";
decimal number = decimal.Parse("1,1", ci); // 1.1

Encontré otra forma de hacerlo. Parece extraño pero me funciona bien.

Entonces, si no conoce la cultura del sistema de destino y no sabe qué valor obtendrá como 12.33 o 12,33, puede hacer lo siguiente

string amount = "12.33";
// or i.e. string amount = "12,33";

var c = System.Threading.Thread.CurrentThread.CurrentCulture;
var s = c.NumberFormat.CurrencyDecimalSeparator;

amount = amount.Replace(",", s);
amount = amount.Replace(".", s);

decimal transactionAmount = Convert.ToDecimal(amount); 

Tienes las siguientes posibilidades:

  1. Tu conoces la cultura
    1. Use la configuración de Cultura actual, para la cual está instalada la computadora
    2. Dejas que el usuario decida establecer su cultura -> configuración de usuario en tu programa
  2. No conoces la cultura
    1. Debes decidir al respecto: debes definir y documentar tu decisión
    2. Adivina: intentas analizar, e intenta analizar, e intenta … hasta que obtenga números válidos
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *