2009-11-24 1 views
2

Можно ли разрезать десятичную, а не округлую. Как это.Задача десятичного разреза

decimal number = 12.159m; 

Как я могу легко получить 12,15 от number и не 12.16?

Есть ли простой способ или манипуляции с строками единственный способ?

ответ

9

Вы можете попробовать это

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

Спасибо, что работает! – Tuoski

4

Вы можете сделать

Math.Floor(number * 100)/100 

В зависимости от того, как вы хотите обрабатывать (если вы хотите обрабатывать) отрицательные числа можно также использовать Truncate вместо пола.

+3

Полы не будут иметь желаемого результата для отрицательных чисел. – Joey

+0

Я знаю, и я также обновил ответ с этой информацией – HakonB

-1

Или другой способ сделать это, чтобы использовать регулярные выражения, чтобы захватить входы и преобразовать его обратно в десятичную, например

 
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); 
} 

В ' preNo 'в регулярном выражении, измените его из \ d {1,2}, например, если вы хотите сохранить цифры, а только две цифры после точки. Хорошо, я знаю, что люди скажут, эй, что это медленный и ниспровергающий этот ответ ... это служит для того, чтобы показать, есть ли способы кошки кошки!

Надеюсь, это поможет, С уважением, Tom.

P.S: Редактировал это, как я понял после нисходящего потока, что редактирование ускользало от литералов, которые отсутствовали!

Смежные вопросы