#c# #.net #rounding
#c# #.net #округление
Вопрос:
Я хочу округлить одну десятичную переменную (например, Rs. 5.65) с помощью двух правил:
- если часть после десятичной дроби (.65 в примере) больше 49, добавьте 1 к части перед десятичной дробью.(Пусть будет 6)
- Если часть после запятой меньше 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 в примере)», но вы можете увидеть идею здесь.