Каков синтаксис округления десятичной дроби, оставляющий две цифры после десятичной точки?
Пример: 2,566666 → 2,57
Каков синтаксис округления десятичной дроби, оставляющий две цифры после десятичной точки?
Пример: 2,566666 → 2,57
Если вы хотите регулярное округление, вы можете просто использовать метод Math.Round
. Если вы специально хотите округлить вверх, вы используете метод Math.Ceiling
:
Dim d As Decimal = 2.566666
Dim r As Decimal = Math.Ceiling(d * 100D) / 100D
Вот как я это делаю:
Private Function RoundUp(value As Double, decimals As Integer) As Double
Return Math.Ceiling(value * (10 ^ decimals)) / (10 ^ decimals)
End Function
Math.Round - это то, что вы ищете. Если вы новичок в округлении в .NET, вы также можете найти разницу между AwayFromZero и ToEven округление. По умолчанию ToEven может когда-нибудь занять врасплох.
dim result = Math.Round(2.56666666, 2)
Вы можете использовать System.Math
, в частности Math.Round()
, например:
Math.Round(2.566666, 2)
Math.Round()
, как полагают другие, вероятно, вы хотите. Но текст вашего вопроса специально спросил, как "округлить" [sic]. Если вам всегда нужно округлить, не имея реального значения (то есть: 2.561111 все равно будет идти до 2.57), вы можете сделать это:
Math.Ceiling(d * 100)/100D
Базовая функция округления - Math.Ceiling(d), но спрашивающий специально хотел округлить после второго десятичного знака. Это будет Math.Ceiling(d * 100)/100. Например, он может умножить 46,5671 на 100, чтобы получить 4656,71, затем округлить до 4657, а затем разделить на 100, чтобы сместить десятичную запятую на 2 позиции, чтобы получить 46,57.
Я использовал этот способ:
Math.Round(d + 0.49D, 2)
Я не понимаю, почему люди рекомендуют неверный код ниже:
Dim r As Decimal = Math.Ceiling(d * 100D) / 100D
Правильный код для округления должен выглядеть следующим образом:
Dim r As Double = Math.Ceiling(d)