Округление числа в Visual Basic

У меня есть приложение Visual Basic, которое должно округлить число вниз, например, 2.556 станет 2.55, а не 2.26.

Я могу сделать это с помощью функции, чтобы удалить символы более 2 прямо из десятичной точки, используя это:

Dim TheString As String
TheString = 2.556
Dim thelength = Len(TheString)
Dim thedecimal = InStr(TheString, ".", CompareMethod.Text)
Dim Characters = thelength - (thelength - thedecimal - 2)
_2DPRoundedDown = Left(TheString, Characters)

есть ли функция для этого?

5 ответов


вы можете сделать это с помощью математика.Пол. Однако вам нужно будет умножить * 100 и разделить, так как вы не можете указать количество цифр

Dim theNumber as Double
theNumber = 2.556
Dim theRounded = Math.Sign(theNumber) * Math.Floor(Math.Abs(theNumber) * 100) / 100.0

другой способ сделать это, который не зависит от использования строкового типа:

Dim numberToRound As Decimal
Dim truncatedResult As Decimal
numberToRound = 2.556
truncatedResult = (Fix(numberToRound*100))/100

Математика.Floor () ответ хороший. Я не уверен, в каких именно средах VB Fix () определяется. Как отмечает Джастин, математика.Пол( ) не будет работать с отрицательными числами. Вам нужно будет взять абсолютное значение, а затем умножить на SGN( ) числа. Я не знаю точного имени функции, которую вы бы использовали, чтобы получить знак (не sin() ) числа.

в псевдо-коде, принимая во внимание отрицательные значения, результат будет выглядеть так:

result = sgn( num ) * floor( abs( num * RoundToDig ) ) / RoundToDig

-- Мохнатые коровы мычат и распаковываются.


округлить

Math.Floor(number)

обрезать символы

number.Substring(0,1)

Вы можете преобразовать его в строку.


Dim Input As Decimal
Dim Output As Decimal
Input = 2.556
Output = Input - (Input Mod 0.01)

Это будет работать как с положительными, так и с отрицательными числами