I try to remove the thousand separator so I'm experimenting some code, but it throws and exception. I tried with Convert.ToDouble
, Convert.ToDecimal
etc.
it says:
Convert.ToDouble("1.234,45") threw and exception of 'System.FormatException'
The conversion is thrown from line : Convert.ToDouble()
The argument n2
uses the culturinfo, but I also tried "0.00" both throws the same exception
The whole idea is : how to remove the thousand separator, my input is always in this format: 1.234,54 (comma as decimal and dot as thousand separator)... I like to use it in Textbox GotFocus Event.. so the format should be shown like 12345,45
so : 1.254,45 should be 1254,45 and 1.254,00 should be 1254,00
//http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx
CultureInfo ci = CultureInfo.GetCultureInfo("NL-be");
NumberFormatInfo nfi = (NumberFormatInfo)ci.NumberFormat.Clone();
//Now force thousand separator to be empty string
nfi.NumberGroupSeparator = "";
//Format decimal number to 2 decimal places
string decimalFormatted = Convert.ToDouble("1.234,45").ToString("0.00", nfi);
string decimalFormatted = Convert.ToDouble("1.234,45").ToString("n2", nfi);
Specify the culture with conversion and it will work like:
CultureInfo ci = CultureInfo.GetCultureInfo("NL-be");
double d = Convert.ToDouble("1.234,45", ci);
Your calls to Convert.ToDouble
don't specify a format at all. You need to remember that this:
string decimalFormatted = Convert.ToDouble("1.234,45").ToString("n2", nfi);
is equivalent to:
double tmp = string decimalFormatted = Convert.ToDouble("1.234,45");
string decimalFormatted = tmp.ToString("n2", nfi);
It's the first line that's failing, not the second... and in the first line, it's just going to use the current thread culture.
I suggest you use Double.Parse
instead, and specify the format there. (You could use Convert.ToDouble
instead, but I generally prefer the more type-specific Double.Parse
etc calls. It means there's less to change if you move to TryParse
etc.)
You should also consider using decimal
instead of double
if the exact digits matter. For example, if this is a currency value, it's logically more of a decimal
number than a double
number.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With