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.
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.
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}");
202667.4
be represented in German culture with group and decimal separators), that's why we use formatting. –
Nickname You can use Culture info while parsing number into German format
Try with this approach:
string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:000,000.00}", <your number>)
for example:
string result = string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:000,000.00}", 202667.4)
double
has no format. Formatting comes into play when interpreting a string to parse it, but it looks like it parsed your number string correctly, and it comes into play when formatting a string, which you don't do in the comment. –
Aberration You can use this code to convert variables to different cultures:
int MyInt = 100;
string MyString = MyInt.ToString("C",CultureInfo.GetCultureInfo("de-DE"));
MessageBox.Show(MyString);
If you want to build all programs with a German format you can this code at your main class:
using System.Globalization;`
Application.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");`
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);
}
© 2022 - 2024 — McMap. All rights reserved.