Округление чисел до ближайших сотых в Silverlight - PullRequest
0 голосов
/ 17 января 2012

Как лучше всего округлить число до ближайших сотых?

Например, если у меня есть 100/3, это будет равно 33,333333333 ... Я хочу округлить до ближайших сотых, чтобыУ меня 33,34, а не 33,33.

В настоящее время я делаю это: Math.Ceiling (numberToRound * 100) / 100;

Кажется, что это работает, но это нормальный способ сделатьэто?

Это в приложении Windows Phone для Silverlight с использованием C #.

Ответы [ 4 ]

1 голос
/ 17 января 2012

33,33 ближе к 100/3, чем к 33,34. Что вы подразумеваете под ближайшими сотыми?

Извините, моя формулировка может быть слишком расплывчатой.Я хочу округлить до ближайших сотых, чтобы число всегда увеличивалось, а не уменьшалось.Например, 33,331, 33,332, 33,333, 33,334, 33,335, 33,336 ... с округлением до 33,34.

Тогда использование Ceiling будет вполне приемлемым, если вы хотите округлить число.

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

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

1 голос
/ 17 января 2012

Если вы хотите округлить до большего числа, используйте Math.Ceiling.Если вы хотите округлить до меньшего числа, используйте Math.Floor.

Недостаток: эти две функции не принимают количество цифр в качестве параметра, как Math.Round.Чтобы обойти, вы можете сначала умножить свое число, округлить его, а затем разделить его обратно.

Например, чтобы сохранить два десятичных знака и округлить до большего числа:

var result = Math.Ceiling(number * 100) / 100;
0 голосов
/ 17 января 2012

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

double myNumber = 100.0 / 3.0;
string myNumberFormatted = myNumber.ToString("N2"); // = "33.34"
0 голосов
/ 17 января 2012

Использовать Math.Round: http://msdn.microsoft.com/en-us/library/zy06z30k(v=vs.95).aspx

Math.Round (33,3333D, 2) приведет к 33,33.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...