using System;
class LocalizedFloatParser
{
public static double ToFloat(string input) {
string str = input;
int commaCount = CountOccurrences(str, ',');
int dotCount = CountOccurrences(str, '.');
int lastComma = str.LastIndexOf(',');
int lastDot = str.LastIndexOf('.');
if (commaCount > 0 && dotCount > 0) {
if (lastComma > lastDot) {
str = str.Replace(".", "");
str = str.Replace(",", ".");
}
else {
str = str.Replace(",", "");
}
}
else if (commaCount > 0) {
str = str.Replace(".", "");
str = str.Replace(",", ".");
}
else {
str = str.Replace(",", "");
}
return double.Parse(str, System.Globalization.CultureInfo.InvariantCulture);
}
private static int CountOccurrences(string str, char ch)
{
int count = 0;
foreach (char c in str)
{
if (c == ch) count++;
}
return count;
}
static void Main()
{
Console.WriteLine(ToFloat("1,224,533.533").ToString("F3"));
Console.WriteLine(ToFloat("1.224.533,533").ToString("F3"));
Console.WriteLine(ToFloat("2.354,67").ToString("F2"));
Console.WriteLine(ToFloat("2,354.67").ToString("F2"));
}
}
/*
run:
1224533.533
1224533.533
2354.67
2354.67
*/