Question: I have a number like `202667.4`. I want to convert this to number *based on culture*.

For Ex:

> 
> In "de"(German) the number should be in **202.667,40**.
> 
> 
> 

Any help will be greatly appreciated.

Thanks.

Answer: 
If you want to represent existing number (say, `double`) in culture specific format, try *formatting*:

<https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings>

```
double source = 202667.4;

// "n"  - ... group separators, and a decimal separator with optional negative sign  
// "de" - German culture
string result = source.ToString("n", CultureInfo.GetCultureInfo("de"));

Console.WriteLine(result);

```

Outcome

```
202.667,40

```

If you are given a `string` and you want a number, put `Parse` (`TryParse`):

```
string data = "202.667,40";

double result = double.Parse(data, CultureInfo.GetCultureInfo("de"));

Console.WriteLine(data.ToString(CultureInfo.InvariantCulture));

```

If you don't want to specify the culture each time you work with formatting, you can set the culture as a *current* one:

```
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("de");

...

double source = 202667.4;

Console.WriteLine($"{source:n}");

```
```
 System.Globalization.CultureInfo EnglishCulture = new 
System.Globalization.CultureInfo("en-EN");
System.Globalization.CultureInfo GermanCulture = new 
System.Globalization.CultureInfo("de-de");

```

neccesary transformation,

```
double val;
if(double.TryParse("65,89875", System.Globalization.NumberStyles.Float, 
GermanCulture,  out val))
{
string valInGermanFormat = val.ToString(GermanCulture);
string valInEnglishFormat = val.ToString(EnglishCulture);
 }

if(double.TryParse("65.89875", System.Globalization.NumberStyles.Float, 
EnglishCulture,  out val))
{
string valInGermanFormat = val.ToString(GermanCulture);
string valInEnglishFormat = val.ToString(EnglishCulture);
 }

```