2012-01-17 2 views
0

Каков наилучший способ округления числа до ближайших сотых?Округление номеров до ближайших сотых в Silverlight

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

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

Это похоже на работу, но это нормальный способ сделать это?

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

+1

33.33 ближе к 100/3, чем 33.34 Что вы подразумеваете под ближайшими сотыми долями? –

+0

Извините, моя формулировка может быть слишком расплывчатой. Я хочу округлить до ближайших сотых, чтобы число всегда поднималось, а не вниз. Например, 33.331, 33.332, 33.333, 33.334, 33.335, 33.336 ... все вокруг до 33.34. – dtc

+0

Вы должны сказать «следующая сотая» –

ответ

1

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

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

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

var result = Math.Ceiling(number * 100)/100; 
0

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

double myNumber = 100.0/3.0; 
string myNumberFormatted = myNumber.ToString("N2"); // = "33.34" 
+0

myNumberFormatted результаты в «33.33», а не «33.34», когда я пытаюсь это сделать. – dtc

1

33,33 ближе к 100/3, чем 33.34 Что вы имеете в виду ближайших сотых?

Извините, моя формулировка может быть слишком расплывчатой. Я хочу округлить до ближайших сотых, чтобы число всегда поднималось вверх, а не вниз. Например 33.331, 33.332, 33.333, 33.334, 33.335, 33.336 ... все округлые до 33.34.

Затем использование потолка абсолютно нормально, если вы хотите округлить номер.

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

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

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