formato - tostring c# format
Sorprendente salida de int.ToString. (4)
Basándose simplemente en la documentación de Microsoft, las cadenas de formato numérico personalizadas , sus cadenas "TE000" y "TR000" son cadenas de formato personalizado, pero claramente se analizan de manera diferente.
2.ToString("TE000")
es solo un error en el formateador; va por un camino de buggy debido a la "E" sin escaparse. Así que, inesperadamente, asumiendo que todo es un literal.
2.ToString("TR000")
se interpreta como un literal "TR" implícito más 3 dígitos con cero para un valor entero; por lo tanto, obtienes "TR002".
Si realmente desea verbalmente TE y TR, las expresiones 2.ToString("/"TE/"000")
y 2.ToString("/"TR/"000")
lograrán eso especificando TE y TR como explícitos literales, en lugar de dejar que el formateador adivine si son especificadores de formato válidos (y se equivocan).
He estado trabajando en un proyecto y encontré un problema interesante:
2.ToString("TE"+"000"); // output = TE000
2.ToString("TR"+"000"); // output = TR002
También he intentado con varias cadenas distintas de "TE"
pero todas tienen la misma salida correcta.
Por curiosidad, me pregunto cómo es posible que esto haya sucedido.
No puede usar un formato numérico para lograr un formato personalizado, en su lugar use algo como esto:
int i = 2;
String.Format("TE{0:X3}", i);
ToString debe PARTIR la cadena de formato y entender qué hacer con ella. Echemos un vistazo a los siguientes ejemplos:
2.ToString("TE000"); //output TE000
2.ToString("E000"); //output 2E+000
2.ToString("0TE000); //output 2TE000
2.ToString("T"); //throws exception
2.ToString("TT"); //output TT
Esto muestra que si el analizador ToString puede entender al menos parte del formato, asumirá que el resto son solo caracteres adicionales para imprimir con él. Si el formato no es válido para el número dado (como cuando usa un formato de cadena DateTime en un número), se producirá una excepción. Si no puede entender el formato, devolverá la cadena de formato como resultado.
Ver cadenas de formato numérico personalizado . La E
significa la parte exponente de la notación científica del número. Dado que 2
es 2E000
en notación exponencial, eso podría explicarlo.