ACTUALIZACIÓN: Mirando el MSDN documentation on the System.Double
type, veo esto:
Por defecto, un valor doble contiene 15 dígitos decimales de precisión, aunque un máximo de 17 dígitos se mantiene internamente.
Así que creo pdr's on to something, en realidad. Sólo hacer esto:
// As long as you've got at least 15 #s after the decimal point,
// you should be good.
value.ToString("#,#.###############");
He aquí una idea:
static string Format(double value)
{
double wholePart = Math.Truncate(value);
double decimalPart = Math.Abs(value - wholePart);
return wholePart.ToString("N0") + decimalPart.ToString().TrimStart('0');
}
Ejemplo:
Console.WriteLine(Format(42023212.0092343234));
Salida:
42,023,212.00923432409763336
Ja, bueno, como pueden ver, esto arroja resultados imperfectos, debido (creo) a problemas matemáticos de punto flotante. Oh bien; es una opción, de todos modos.
Mejor hasta ahora, funciona siempre que los decimales no sean más largos que el número de # ... Esperaba evitar esta opción, pero si es la única forma ... – NotDan
Buena llamada. Yo digo que esta es la mejor respuesta. –