c# - miles - Conversión de doble a cadena con N decimales, punto como separador decimal y sin separador de mil
separador de miles y decimales c# (6)
Necesito convertir un decimal a una cadena con N decimales (dos o cuatro) y NO mil separador:
''XXXXXXX (punto) DDDDD''
El problema con CultureInfo.InvariantCulture
es que son lugares '','' para separar miles.
ACTUALIZAR
Esto debería funcionar para tipos decimales y dobles.
Mi pregunta anterior: Necesita convertir doble o decimal en cadena
Aquí hay una descripción detallada de cadenas de formato numérico
https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
Creo que podrías haber usado:
value.ToString ("F" + NumberOfDecimals)
value = 10,502
value.ToString("F2") //10,50
value = 10,5
value.ToString("F2") //10,50
Es realmente fácil especificar su propio separador decimal. Me tomó alrededor de 2 horas averiguarlo: D. Ves que estabas usando la cultura actual u otra que especifiques ¿no? Bueno, lo único que el analizador necesita es un Proveedor IFormat. Si le da el CultureInfo.CurrentCulture.NumberFormat
como formateador, formateará el doble de acuerdo con el NumberDecimalSeparator
su cultura actual. Lo que hice fue crear una nueva instancia de la clase NumberFormatInfo
y establecer su propiedad NumberDecimalSeparator
en cualquier cadena de separación que quisiera. Complete el código a continuación:
double value = 2.3d;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "-";
string x = value.ToString(nfi);
¿El resultado? "2-3"
Para un decimal
, use el método ToString y especifique el cultivo Invariant para obtener un punto como separador decimal:
value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)
El tipo long
es un número entero, por lo que no hay parte de fracción. Simplemente puede formatearlo en una cadena y agregar algunos ceros después:
value.ToString() + ".00"
Prefiero usar ToString()
e IFormatProvider
.
double value = 100000.3
Console.WriteLine(value.ToString("0,0.00", new CultureInfo("en-US", false)));
Salida: 10,000.30
Simplemente puede usar decimal.ToString ()
Por dos decimales
myDecimal.ToString("0.00");
Por cuatro decimales
myDecimal.ToString("0.0000");
Esto le da un punto como separador decimal y ningún separador de mil sin importar la cultura.
double value = 3.14159D;
string v = value.ToString().Replace(",", ".");
Console.WriteLine(v);
Salida: 3.14159