Округление десятичных индийских рупий C#

#c# #.net #rounding

#c# #.net #округление

Вопрос:

Я хочу округлить одну десятичную переменную (например, Rs. 5.65) с помощью двух правил:

  1. если часть после десятичной дроби (.65 в примере) больше 49, добавьте 1 к части перед десятичной дробью.(Пусть будет 6)
  2. Если часть после запятой меньше 49 (например, 2.45), удалите часть после запятой (например, сделайте ее 2.00)

Пожалуйста, предложите решение.

РЕДАКТИРОВАТЬ Кто-нибудь может сказать мне, как добиться того же, используя TSQL и CrystalReport???

Комментарии:

1. используйте математику. Round() msdn.microsoft.com/en-us/library /…

2. А что, если это 3,493 или 3,496? Как насчет отрицательных чисел?

3. Это всегда будет до 2 знаков после запятой, и поскольку это деньги, нет разницы, положительное это значение или отрицательное.

4. Да, Ричард, я уже кое-что пробовал (мат. Round()) и это работает не так, как мне хотелось.

5. посмотрите на другие перегрузки для математики. Округление, некоторые из них позволяют вам указать логику округления.

Ответ №1:

Посмотрите на Math.Round(decimal, MidPointRounding) , это должно делать то, что вам нужно.

Комментарии:

1. Второй параметр должен быть MidpointRounding.AwayFromZero .

Ответ №2:

Хорошо .. если сомневаетесь, посмотрите на систему.Математический объект. В вашем случае то, что вы хотите, это

 Math.Round(SomeDecimal);
  

Комментарии:

1. Проблема в том, что оно составляет 12,50 12,00, в то время как я хочу, чтобы оно было 13,00

Ответ №3:

 iif(5.655 % Math.Round(5.6549, 2) > 0.49, Math.Ceiling(5.6549), Math.Floor(5.6549));

iif(5.655 % Math.Round(5.655, 2) > 0.49, Math.Ceiling(5.655), Math.Floor(5.655));
  

Комментарии:

1. Я думаю, что допустил крошечную ошибку, не уверен, было ли это после запятой или, как вы говорите, «часть после запятой (.65 в примере)», но вы можете увидеть идею здесь.