number - string.format c# money
Especificador de formato Float to String (4)
Tengo algunos valores flotantes que quiero convertir a una cadena, quiero mantener el mismo formato al convertir, es decir, 999.0000 (float) -> 999.0000 (String). Mi problema es que cuando los valores contienen un número arbitrario de ceros después del punto decimal, como en el ejemplo anterior, se eliminan al convertir a una cadena, por lo que el resultado con el que realmente termino es 999.
Miré los especificadores de formato para el método toString()
en MSDN , el especificador RoundTrip (''R'') parece que producirá lo que quiero, pero solo se admite para las variables Single, Double y BigInt. ¿Hay un especificador de formato como este para las variables de flotación? ¿O sería más fácil simplemente convertir los valores en dobles?
ACTUALIZACIÓN: Solo por claridad, la razón por la que quiero mantener los ceros finales es porque estoy haciendo una comparación de lugares decimales, es decir, estoy comparando el número de dígitos después del lugar decimal entre dos valores. Entonces, por ejemplo, 1.00 y 1.00000 tienen un número diferente de dígitos después del punto decimal. Sé que es una solicitud extraña, es por trabajo y el requisito viene de muy alto.
ACTUALIZACIÓN 2-3-11:
Estaba pensando demasiado en esto, estoy leyendo los números de un archivo txt y luego analizándolos como flotadores, voy a modificar el programa para verificar si los valores de las cadenas son decimales o números enteros. Perdón por perder su tiempo, aunque esto fue muy perspicaz.
En C #, float
es un alias para System.Single
(un poco como int
es un alias para System.Int32
).
Use ToString()
con este formato:
12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000
Poner tanto cero como sea necesario al final del formato.
Puede pasar una cadena de formato al método ToString, así:
ToString("N4"); // 4 decimal points Number
Si desea ver más modificadores, eche un vistazo a MSDN - Cadenas estándar de formato numérico
En primer lugar, como dice Etienne , float
en C # es Single
. Es solo la palabra clave C # para ese tipo de datos.
Entonces definitivamente puedes hacer esto:
float f = 13.5f;
string s = f.ToString("R");
En segundo lugar, ha referido un par de veces al "formato" del número; los números no tienen formatos, solo tienen valores . Las cadenas tienen formatos. Lo que me hace preguntarme: ¿qué es lo que tienes que tiene un formato pero no es una cadena? Lo más cercano que puedo pensar sería decimal
, que mantiene su propia precisión; sin embargo, llamar simplemente decimal.ToString
debería tener el efecto que desee en ese caso.
¿Qué le parece incluir un código de ejemplo para que podamos ver exactamente lo que está haciendo y por qué no está logrando lo que quiere?