Convertit une chaîne en nombre décimal, en gardant les fractions

Je suis en train de convertir 1200.00 à decimal, mais Decimal.Parse() supprime .00. J'ai essayé différentes méthodes, mais elle supprime toujours .00, sauf quand je approvisionnement en une fraction différente de 0.

string value = "1200.00";

Méthode 1

 var convertDecimal = Decimal.Parse(value ,  NumberStyles.AllowThousands
       | NumberStyles.AllowDecimalPoint | NumberStyles.AllowCurrencySymbol);

Méthode 2

 var convertDecimal = Convert.ToDecimal(value);

Méthode 3

var convertDecimal = Decimal.Parse(value,
       NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture);

Comment puis-je convertir un string contenant 1200.00 à un decimal contenant 1200.00?

  • Je pense que les zéros sont implicites. Le ".00" partie existe dans la virgule, même si vous ne les voyez pas. Pour des raisons de formatage vous devez leur montrer, mais plutôt que vous n'avez pas à vous inquiéter.
  • Non, decimal maintient l'échelle appropriée. decimal.Parse("1200.000") et decimal.Parse("1200.00") sera de retour de valeurs distinctes, la préservation de la nombre de de fuite 0s.
  • Je suis d'accord avec @NelsonMiranda. En fait décimal.Parse("1200.000").Equals(décimal.Parse("1200.00")) renvoie true, alors je ne vois pas l'intérêt pour cette question....
  • Je confirme, c'est un problème pour les non-US-localisation. J'ai mon pc est configuré avec l'italien locale et à la virgule.Parse("1200.00") renvoie 120000, tout en décimal.Parse("1200,00") renvoie 1200.00
InformationsquelleAutor NETQuestion | 2010-11-24