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:
- Tu conoces la cultura
- Use la configuración de Cultura actual, para la cual está instalada la computadora
- Dejas que el usuario decida establecer su cultura -> configuración de usuario en tu programa
- No conoces la cultura
- Debes decidir al respecto: debes definir y documentar tu decisión
- 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)