2010-08-16 31 views
6

Tengo un valor que va de 1 a 10000000. Después del valor 10000 necesito mostrar los valores como 1E6,1E7,1E8, .... Cómo configurar esto en string.Format?formato de cadena en C#

Gracias a todos por responder.
Ahora puedo mostrar 1E5,1E6,1E7, .... usando el formato "0.E0" pero no quiero configurar "E" de 1 a 10000.
¿Cómo puedo hacer esto?

Respuesta

2

Puede usar el exponent notation pero creo que funcionará para todos los números y no solo para aquellos mayores a 10000. Es posible que deba tener una condición para manejar este caso.

0

Sugiero referirme al valor como un flotador. De esta forma puede usar "NumberStyles.AllowExponent" y eso le proporcionará exactamente lo que está buscando.

string i = "100000000000"; 
    float g = float.Parse(i,System.Globalization.NumberStyles.AllowExponent); 

    Console.WriteLine(g.ToString()); 
+0

gracias pero necesito mostrar solo 1E11 pero su código muestra + símbolo que no necesito – Guddu

+0

Esto es todo lo contrario. Aquí analiza un flotador de una cadena. Cuando es un flotador, no tiene ningún formato, por supuesto, e imprimiéndolo simplemente imprime el número. – Kobi

0
 
String.Format("10^8 = {0:e}", 100000000"); //The "e" will appear lowercase 
String.Format("10^8 = {0:E}", 100000000"); //The "E" will appear in uppercase 

Si usted quiere que sea más bonita, intente esto:

 
Console.WriteLine("10^8 = " + 100000000.ToString("0.##E0")); 
2

Algo como esto debe hacer el truco:

void Main() 
{ 
    Console.WriteLine(NumberToString(9999)); 
    Console.WriteLine(NumberToString(10000)); 
    Console.WriteLine(NumberToString(99990)); 
    Console.WriteLine(NumberToString(100000)); 
    Console.WriteLine(NumberToString(10000000)); 
} 

// Define other methods and classes here 
static string NumberToString(int n) 
{ 
    return (n > 10000) ? n.ToString("E") : n.ToString(); 
} 

=>

9999 
10000 
9.999000E+004 
1.000000E+005 
1.000000E+007 

nb: elige un nombre mejor para la función.

+0

Probablemente sea aún mejor como método de extensión ... –

+0

@Dan: se etiquetó C# 2.0, ¿esa versión tenía métodos de extensión? Pensé que fueron presentados en 3.0. Pero sí, sería mucho más agradable como método de extensión. – ngoozeff