В Silverlight метод Math.Round () не содержит перегрузки с параметром MidpointRounding.Каков наилучший подход к округлению двойного от нуля в Silverlight в этом случае?
Пример:
Math.Round (1.4) => 1
Math.Round(1.5) => 2
Math.Round (1.6) => 2
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 и Silverlight Rounding
Любое количество «хаков» сделает это, например:
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
Я не знаю "хорошего" способа сделать это.