Question

Lors de l'utilisation double.Parse, il semble aimer chaîne loin des zéros (de négligeable) de la chaîne que je convertir. Je voudrais double.Parse garder à des endroits après la virgule. Par exemple, voici un code:

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

Le Debugger écrit alors

  

Ancien 4,00 à 4

Il semble donc que double.Parse faire quelque chose de louche ici. Post-scriptum MouseSensitivity est également du type double, donc je ne peux pas faire des opérations de chaîne sur elle.

Était-ce utile?

La solution

Votre question n'a pas de sens. Doubles ne le font pas Vous « chiffres après la virgule » en premier lieu. Ils ne stockent pas quelque chose qui ressemble à distance comme une « représentation décimale d'un nombre » interne. En fait, ils ne stockent pas quoi que ce soit à l'intérieur qui ressemble même texte reconnaissable.

Il rapporte 4 parce que 4,00 est exactement égal à 4. Il affiche le nombre « exactement quatre sans partie décimale » sous forme de texte selon ses règles par défaut pour convertir les numéros en texte.

. Oui, il est long et difficile, mais il est tout simplement impossible d'utiliser des types numériques à virgule flottante correctement sans réel compréhension de ce matériau - et il n'a pas Peu importe ce que la langue que vous utilisez, soit.

Autres conseils

Le type de données double est simplement un numéro; il ne garde pas trace de la chaîne qui a été analysé pour créer la valeur. Sa représentation de chaîne entre en jeu seulement quand .ToString() est appelé.

Si vous savez que vous voulez toujours deux chiffres après la virgule que vous pouvez droit remplacés par des zéros.

il est pas le travail du type double de garder une trace de votre format d'affichage souhaité.

Double ne stocke pas des zéros redondants. Selon vous ou la couche présentation, vous pouvez formater pour vous montrer qu'il doit apparaître, par exemple, String.Format ( « {0:. # ##} », doubleVariable)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top