C # separador decimal?
Pregunta
Tengo un método que devuelve números como esto:
public decimal GetNumber()
{
return 250.00m;
}
Ahora, cuando este valor se imprime a la consola por ejemplo, tiene una coma (250,00) en lugar de un punto (250,00). Siempre quiero un punto aquí, ¿qué estoy haciendo mal?
Solución
decimal
sí mismo no tiene el formato -. No tiene ni una coma ni un punto
Es cuando se convierte en una cadena que obtendrá eso. Puede asegurarse de obtener un punto especificando la referencia cultural de todos:
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);
}
}
Otros consejos
Como se explicó por Jon Skeet, se debe especificar el cultivo utilizado para formatear el string
:
var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture);
Es una buena práctica utilizar siempre la sobrecarga ToString
en el que se especifica la cultura. De lo contrario, utilice el .NET
Culture
hilo actual, lo que escribir diferentes strings
a la salida en función de la configuración regional del PC
...
configuración regional específica de formatear?
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg (verde equivale a una coma, por lo que si usted está llamando ToString()
en su decimal usando la información de cultura de cualquiera de estos lugares, verá una coma).
He comprobado con Visual Studio 2008 (aplicación de consola) y su no mostrar "" en lugar de "" , Por favor proporcionar más detalles. Creo que es cuestión de la cultura-información. por favor provea un poco más los detalles del código
class Program
{
static void Main(string[] args)
{
Console.Write(GetNumber());
}
public static decimal GetNumber()
{
return 250.00m;
}
}