Хорошо, если вы используете decimal
для финансы , вы можете принять не только десятичный разделитель, но групповой (тысяча) один:
123,456,789.45
здесь .
- это разделитель десятичный , когда ,
- групповые. Для поддержки разделителя групп вы можете указать NumberStyles.Any
Console.Write("Enter number: ");
decimal d;
while (!Decimal.TryParse(Console.ReadLine(), NumberStyles.Any, null, out d))
Console.WriteLine("Invalid syntax. Please, try again.");
Обратите внимание, что здесь я поместил null
, что означает CultureInfo.CurrentCulture
, которое на вашей рабочей станции, кажется, имеет ,
для десятичного разделителя и .
для первой группы:
"123.45" -> 12345m - note, that group separator(s) is/are removed
"1.2.3.4.5" -> 12345m
"123,45" -> 123.45m - while decimal is turned into decimal point
Если вы хотите обработать .
как десятичный разделитель (поэтому "123.45"
будет проанализирован в 123.45m
), вы можете указать CultureInfo.InvariantCulture
:
Console.Write("Enter number: ");
decimal d;
while (!Decimal.TryParse(Console.ReadLine(),
NumberStyles.Any,
CultureInfo.InvariantCulture,
out d))
Console.WriteLine("Invalid syntax. Please, try again.");