Contamos con la contestación a este inconveniente, al menos eso creemos. Si presentas inquietudes dínoslo, que sin dudarlo te responderemos
Solución:
decimal a = 12;
var b = a.ToString("N1"); // 12.0
a = 1.2m;
b = a.ToString(); // 1.2
a = 101m;
b = a.ToString("N10"); // 101.0000000000
a = 1.234m;
b = a.ToString("N10"); // 1.2340000000
Para la segunda parte de su pregunta, donde desea una longitud total de 10, entonces:
decimal a = 1.234567891m;
int numberOfDigits = ((int)a).ToString().Length;
var b = a.ToString($"N9 - numberOfDigits"); //1.23456789
//Or before C# 6.0
var b = a.ToString("N" + (9 - numberOfDigits)); //1.23456789
Básicamente ((int)number).ToString().Length
le da la cantidad de dígitos antes de la .
(convertir a int eliminará las fracciones) y luego reducir eso del número de dígitos después del .
(y también -1 para el propio punto decimal)
Puedes usar .ToString()
para hacer esta tarea:
decimal aDecimalVal = 10.234m;
string decimalString = aDecimalVal.ToString("#.000"); // "10.234"
aDecimalVal.ToString("#.00"); // "10.23"
aDecimalVal.ToString("#.0000"); // "10.2340"
El número de 0
después de la .
en el formato string decidirá el número de lugares en el decimal string.
Actualizaciones: Entonces, desea encontrar la cantidad de dígitos después de los puntos decimales, por lo que los cambios en el código serán como los siguientes:
decimal aDecimalVal = 10.2343455m;
int count = BitConverter.GetBytes(decimal.GetBits(aDecimalVal)[3])[2];
string formatString = String.Format("N0",count.ToString());
string decimalString = aDecimalVal.ToString(formatString); // "10.2343455"
Puntuaciones y reseñas
Si conservas alguna sospecha y capacidad de arreglar nuestro división eres capaz de ejecutar una referencia y con placer lo analizaremos.