public static void Main()
Console.WriteLine("2000,0.20 = {0}", FixUnknownCurrency("2000,0.20"));
Console.WriteLine("2000.0,20 = {0}", FixUnknownCurrency("2000.0,20"));
Console.WriteLine("2000.00 = {0}", FixUnknownCurrency("2000.00"));
Console.WriteLine("2000000 = {0}", FixUnknownCurrency("2000000"));
Console.WriteLine("20000,00 = {0}", FixUnknownCurrency("20000,00"));
Console.WriteLine("200 = {0}", FixUnknownCurrency("200"));
Console.WriteLine("2,00 = {0}", FixUnknownCurrency("2,00"));
Console.WriteLine("2.00 = {0}", FixUnknownCurrency("2.00"));
Console.WriteLine("1 = {0}", FixUnknownCurrency("1"));
static double FixUnknownCurrency(string amountText)
amountText = amountText?.Trim()?.Replace(" ", string.Empty);
if(string.IsNullOrWhiteSpace(amountText))
if(amountText.Length < 3)
return double.Parse(amountText);
var currencyDecimal = amountText[amountText.Length-3];
if(Char.IsNumber(currencyDecimal))
return double.Parse(amountText);
if(currencyDecimal == '.' || currencyDecimal == ',')
amountText = amountText.Replace(",", string.Empty).Replace(".", string.Empty);
return double.Parse(amountText) / 100d;
return double.Parse(amountText);