2009-11-24 4 views
2

Est-il possible de couper des décimales et non de les arrondir. Comme ça.Problème de décimale

decimal number = 12.159m; 

Comment puis-je obtenir facilement de 12,15 number et non 12,16?

Y a-t-il un moyen facile ou est-ce que la manipulation de chaîne est la seule façon?

Répondre

9

Vous pouvez essayer cette

decimal number = 12.159m; 
number = Math.Truncate(number * 100m)/100m; 
+0

Merci cela fonctionne! – Tuoski

4

Vous pouvez faire

Math.Floor(number * 100)/100 

Selon la façon dont vous voulez gérer (si vous voulez gérer) les nombres négatifs, vous pouvez également utiliser troncature au lieu de sol.

+3

Le plancher n'aura pas le résultat souhaité pour les nombres négatifs. – Joey

+0

Je sais et j'ai mis à jour la réponse avec cette information ainsi – HakonB

-1

Ou une autre façon de le faire, est d'utiliser une expression régulière pour capturer les entrées et le reconvertir en décimal, par exemple

 
Regex r = new Regex("(?<postNo>\d+)\.(?<preNo>\d{1,3})"); 
Decimal d= 12.159M; 
Match m = r.Match(d.ToString()); 
if (m.Success){ 
string s = string.Format("{0}.{1}", m.Groups["postNo"].Text, m.Groups["preNo"].Text); 
Decimal d = Decimal.Parse(s); 
} 

Dans le ' par exemple, si vous voulez garder les chiffres MAIS seulement deux chiffres après le point. Ok, je sais que les gens diront, hé c'est lent et downvote cette réponse ... ça sert à montrer qu'il y a des façons de dépecer un chat!

Espérons que cela aide, Cordialement, Tom.

P.S: Je l'ai édité car j'ai réalisé après un downvote que l'édition a échappé aux littéraux qui manquaient!