Синтаксис для округления в VB.NET

Каков синтаксис округления десятичной дроби, оставляющий две цифры после десятичной точки?

Пример: 2,566666 → 2,57

Ответ 1

Если вы хотите регулярное округление, вы можете просто использовать метод Math.Round. Если вы специально хотите округлить вверх, вы используете метод Math.Ceiling:

Dim d As Decimal = 2.566666
Dim r As Decimal = Math.Ceiling(d * 100D) / 100D

Ответ 2

Вот как я это делаю:

Private Function RoundUp(value As Double, decimals As Integer) As Double

    Return Math.Ceiling(value * (10 ^ decimals)) / (10 ^ decimals)

End Function

Ответ 3

Math.Round - это то, что вы ищете. Если вы новичок в округлении в .NET, вы также можете найти разницу между AwayFromZero и ToEven округление. По умолчанию ToEven может когда-нибудь занять врасплох.

dim result = Math.Round(2.56666666, 2)

Ответ 4

Вы можете использовать System.Math, в частности Math.Round(), например:

Math.Round(2.566666, 2)

Ответ 5

Math.Round(), как полагают другие, вероятно, вы хотите. Но текст вашего вопроса специально спросил, как "округлить" [sic]. Если вам всегда нужно округлить, не имея реального значения (то есть: 2.561111 все равно будет идти до 2.57), вы можете сделать это:

Math.Ceiling(d * 100)/100D

Ответ 6

Базовая функция округления - Math.Ceiling(d), но спрашивающий специально хотел округлить после второго десятичного знака. Это будет Math.Ceiling(d * 100)/100. Например, он может умножить 46,5671 на 100, чтобы получить 4656,71, затем округлить до 4657, а затем разделить на 100, чтобы сместить десятичную запятую на 2 позиции, чтобы получить 46,57.

Ответ 7

Я использовал этот способ:

Math.Round(d + 0.49D, 2)

Ответ 8

Я не понимаю, почему люди рекомендуют неверный код ниже:

Dim r As Decimal = Math.Ceiling(d * 100D) / 100D

Правильный код для округления должен выглядеть следующим образом:

Dim r As Double = Math.Ceiling(d)
  • Math.Ceiling работает с типом данных Double (not Decimal).
  • Неверный * 100D/100D нарушит ваши результаты для больших чисел.
  • Документация Math.Ceiling находится здесь: http://msdn.microsoft.com/en-us/library/zx4t0t48.aspx