La prevención de double.Parse de la eliminación de ceros a la derecha después del decimal?

StackOverflow https://stackoverflow.com/questions/4415596

  •  08-10-2019
  •  | 
  •  

Pregunta

Cuando se utiliza double.Parse, que parece que le gusta a la cadena de distancia (no significativos) cualquier ceros al final de la cadena que me estoy convirtiendo. Me gustaría double.Parse para mantener a lugares decimales. Por ejemplo, he aquí algo de código:

tobereturned.MouseSensitivty = double.Parse(String.Format("{0:#.##}", tempstring[1]));
Debug.WriteLine("Converted " + String.Format("{0:#.##}", tempstring[1]) + " to " + tobereturned.MouseSensitivty);

El depurador a continuación, escribe

Modificada 4,00-4

Así que parece que double.Parse es haciendo algo raro aquí. PD MouseSensitivity es también del tipo doble, así que no puedo hacer ningún operaciones de cadena en él.

¿Fue útil?

Solución

Su pregunta no tiene sentido. Dobles no hacen Tienes "lugares después del decimal" en el primer lugar. No almacenan todo lo que parezca remotamente como una "representación decimal de un número" internamente. De hecho, no almacenan internamente todo lo que se ve aún como texto reconocible.

Se informa 4 porque 4,00 es exactamente igual a 4. Se está mostrando el número "exactamente cuatro con ninguna parte fraccionaria" como texto de acuerdo con sus reglas predeterminadas para convertir números a texto.

este . Sí, es largo y difícil, pero simplemente no es posible utilizar de punto flotante tipos numéricos correctamente sin comprensión real es de este material - y no lo hace importar el idioma que está utilizando, ya sea.

Otros consejos

El tipo de datos double es simplemente un número; que no hace un seguimiento de la cadena que se analiza para crear el valor. Su representación de cadena sólo entra en juego cuando se llama .ToString().

Si sabe que siempre quiere dos lugares decimales Puede hacer relleno con ceros.

no es el trabajo del tipo doble para mantener un registro de su formato de visualización deseada.

Doble no almacena ceros redundantes. En su opinión o capa de presentación, es posible que desee darle formato para mostrar que desea que aparezca, por ejemplo, String.Format ( "{0:. # ##}", doubleVariable)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top