2010-08-10 8 views
2

Quel est le moyen le plus simple d'obtenir une chaîne avec la valeur de "76.10" dans un int arrondi à 76?C# Convertir string en int (avec arrondi)

J'ai essayé plusieurs façons d'utiliser Convert.ToInt32 et Decimal, mais je n'arrive pas à me débrouiller?

Edit: Voici le code Jon m'a aidé avec:

  decimal t = Math.Round(decimal.Parse(info.HDDStatus)); 
      int v = (int)t; 
+0

je suis sûr que cela est dupe - Math.Round est votre réponse OP – Gishu

+0

votre code ..... Merci –

Répondre

5

La façon la plus simple serait d'utiliser Decimal.Parse pour analyser, puis Math.Round (ou potentiellement Math.Floor selon la façon dont vous voulez des chiffres comme « 76,7 » être manipulé) pour l'arrondir. Puis convertir en un entier juste par coulée.

Je suggère d'utiliser decimal plutôt que double que vous parlez en soi d'un nombre décimal (comme c'est la façon dont il est représenté dans le texte). La méthode exacte d'analyse dépendra de la culture - vous attendriez-vous à ce que le texte de "76,10" apparaisse dans un contexte européen, ou utilisera-t-il toujours "." comme point décimal, par exemple?

+0

pour expliquer, j'ai ajouté code que j'utilise de ceci dans la question originale, cela fonctionne, mais est-ce le meilleur chemin? – JoeBeez

+0

@JoeBeez: En fonction de la façon exacte dont vous voulez arrondir la valeur, et exactement comment vous voulez qu'elle soit analysée, oui. Pensez à différentes cultures, et les valeurs liker "76,6" et "76,5". –

2
  1. Convertir à doubler d'abord et utiliser Math.Floor()

  2. Extrait du sous-chaîne (76) d'abord.

 

string s = "76.7"; 
int n = int.Parse(s.Substring(0, s.IndexOf('.'))); 
+0

Cela fonctionne aussi pour moi, merci – JoeBeez