I have a method which returns numbers like this:
public decimal GetNumber()
{
return 250.00m;
}
Now when this value is printed to the console for example, it has a comma (250,00) instead of a point (250.00). I always want a point here, what am I doing wrong?
decimal
itself doesn't have formatting - it has neither a comma nor a dot.
It's when you convert it to a string that you'll get that. You can make sure you get a dot by specifying the invariant culture:
using System;
using System.Globalization;
using System.Threading;
class Test
{
static void Main()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
decimal d = 5.50m;
string withComma = d.ToString();
string withDot = d.ToString(CultureInfo.InvariantCulture);
Console.WriteLine(withComma);
Console.WriteLine(withDot);
}
}
As explained by Jon Skeet, you should specify the culture used to format the string
:
var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture);
It's a good practice to always use the ToString
overload in which you specify the culture. Otherwise, .NET
use the current thread Culture
, which would write different strings
to the output according to the locale of the PC
...
Locale-specific formatting?
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg (Green equals a comma, so if you are calling ToString()
on your decimal using the culture info of any of these locations, you will see a comma).
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