2010-05-31 3 views
0

В Silverlight метод Math.Round() не содержит перегрузки с параметром «MidpointRounding». Каков наилучший подход к округлению в два раза от нуля в Silverlight в этом случае?Silverlight - круглый удваивается от нуля

Пример:

Math.Round (1.4) => 1

Math.Round (1.5) => 2

Math.Round (1.6) => 2

ответ

1

Любой количество «хаков» будет делать это, например:

Public Shared Function SpecialRound(ByVal inVal) As Double 
    if (inVal < 0) 
     Return Math.Ceil(inVal-0.5) 
    Return Math.Floor(inVal+0.5) 
End Function 

Я не знаю, как это сделать «хорошо».

1
public double RoundCorrect(double d, int decimals) 
{ 
    double multiplier = Math.Pow(10, decimals); 

    if (d < 0) 
     multiplier *= -1; 

    return Math.Floor((d * multiplier) + 0.5)/multiplier; 

} 

Для примеров в том числе, как использовать это в качестве расширения см пост: .NET and Silverlight Rounding

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