Округление числа в 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)
Это будет работать как с положительными, так и с отрицательными числами