JayantaChatterjee Ответов: 4

Как получить округленное значение в C#?


Мне нужно округленное значение от округленного значения, например :
Если я округлю 5.51 --> до 6.00
Мне нужно значение, которое округлено (здесь .49 Как я получаю это значение?),
и
Если я округлю 5.48 --> до 5.00
Мне нужно значение, которое округлено (здесь .48 как я получаю это значение?)

Пожалуйста, помогите мне..

заранее спасибо....

4 Ответов

Рейтинг:
22

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Следуйте ответу Округление десятичных значений в C#[^].

Цитата:
Смотреть на Математика.Круглый (десятичный)[^] или перегрузка, которая принимает аргумент MidpointRounding.[^]

Конечно, вам нужно будет разобрать и отформатировать значение, чтобы получить его из/в текст. Если это входные данные, введенные пользователем, вам, вероятно, следует использовать десятичную дробь.TryParse, используя возвращаемое значение, чтобы определить, является ли вход допустимым.

string text = "19500.55";
decimal value;
if (decimal.TryParse(text, out value))
{
    value = Math.Round(value);
    text = value.ToString();
    // Do something with the new text value
}
else
{
    // Tell the user their input is invalid
}


JayantaChatterjee

Сэр,я знаю круглую функцию, и она работает..
Я решил ее сам...
спасибо за помощь... :-)

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Хорошо... Добро пожаловать...

Поэтому, пожалуйста, примите этот ответ. Я вижу, что вы также опубликовали один ответ.

Примите и этот ответ, чтобы он был полезен другим, и вы будете награждены некоторыми баллами.

Спасибо,
Тадит

Espen Harlinn

5 ЕД!

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Большое спасибо Эспен Харлинн... :)

Рейтинг:
2

Shobhana.n

Привет ты можешь сделать вот так:

double a = 5.50;
string[] str= a.ToString().Split('.');
double num1= Convert.ToDouble("0."+str[1]);
double res;
if (num1 < 0.51)
{
     res= Math.Floor(a);
}
else {
    res = Math.Round(a); 
}


King Fisher

Эй, шоби, как дела :)

Рейтинг:
1

Sergey Alexandrovich Kryukov

Прежде всего, вы должны посмотреть на проблему с другой стороны и подумать, зачем вам нужно округление. Я не верю, что тебе это действительно нужно. Она очень редко нужна. (Одно редкое исключение, которое я знаю, - это генерация псевдослучайных чисел; и я сомневаюсь, что вы разрабатываете что-то вроде нового генератора случайных чисел. :-))

Гораздо более вероятно, что вы просто хочу показать округленное значение на экране, а это что-то совсем другое В этом случае вам следует подумать о форматирование, но не округляя себя. Пожалуйста, смотрите:
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx[^],
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx[^].

Кстати, даже если вы найдете правильный способ решения задачи с помощью округления, подумайте еще раз. Гораздо безопаснее не делать этого и сосредоточиться только на форматировании. Вы же не хотите, чтобы округление попало в ваши расчеты даже случайно.

Удачи,

—СА


Abhinav S

Мой 5.

Sergey Alexandrovich Kryukov

Спасибо, Абхинав.
—СА

Рейтинг:
1

Member 12473157

мы можем вычислить его просто так
давайте предположим,,

double originalVal = 51.25;  // value before round off

double roudedVal = Math.Round(originalVal, MidpointRounding.AwayFromZero); // rounded value

double GetVal = 0;  // to know rounded value

GetVal -= originalVal - roudedVal;

GetVal = Math.Round(GetVal, 2);  // to again roundup value with just 2 decimal precision, if it show like 0.47999909 to show up as 0.48

MessageBox.Show(GetVal.ToString());

// output will be -25


[no name]

Бессмысленный ответ на вопрос 3-летней давности, на который уже есть здравые ответы.

Member 12473157

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