Другие языки программирования и технологии

как округлить число полученое при решеии выражения до десятых в VB

Firdavs Turaev
Firdavs Turaev
1 976
Умножь на 10, округли до целых, раздели на 10:

x = int (x*10)/10 (концепт, с VB-синтаксисом не знаком).
Андрей Мельников
Андрей Мельников
3 460
Лучший ответ
Держи мою функцию.
Если покажется слишком длинной, выкинь лишнее и упрости

Public Function ufRoundVal(OriginalVal As Variant, Optional RoundBit As Integer, _
Optional TopBottom As Integer, Optional ynAbs As Boolean, _
Optional Differential As Variant) As Variant
'' возвращает округленное значение,
' (число, кол-во разрядов, вверх/до ближайшего/вниз, по модулю/нет, разность)
' кол-во разрядов: + после точки
' 0 до целого (по умолчанию)
' - нули в младших разрядах
' вверх/просто/вниз: + вверх
' 0 до ближайшего (по умолчанию)
' - вниз
' по модулю/нет (для отрицательных чисел) : 0=false вверх/вниз -> вверх/вниз
' -1=true ближе к центру
On Error GoTo mErrRoundVal
Dim dOrigVal As Double, dFixVal As Double, dIntVal As Double, RB As Double
dOrigVal = OriginalVal: RB = 10 ^ RoundBit
dFixVal = Fix(dOrigVal * RB): dIntVal = Int(dOrigVal * RB)
Select Case TopBottom
Case Is > 0 'округление вверх
If ynAbs Then
ufRoundVal = (dFixVal + 1 * Sgn(OriginalVal)) / RB 'дольше от 0
Else
ufRoundVal = (dIntVal + 1) / RB 'больше
End If
Case 0 '
If Abs(dOrigVal * RB - dFixVal) >= 0.5 Then
ufRoundVal = (dFixVal + 1 * Sgn(OriginalVal)) / RB
Else
ufRoundVal = dFixVal / RB
End If
Case Is < 0 'округление вниз
If ynAbs Then
ufRoundVal = dFixVal / RB 'ближе к 0
Else
ufRoundVal = dIntVal / RB 'меньше
End If
End Select
Differential = OriginalVal - ufRoundVal
Exit Function
mErrRoundVal:
MsgBox "Ошибка " & http://Err.Number & vbNewLine & "( " & http://Err.Description & " )" & vbNewLine & _
"во время округления " & OriginalVal, vbCritical, "ufRoundVal"
End Function
Денис Смолин
Денис Смолин
12 662
Денис Смолин Убери "http://" - это каким-то образом появилось при вставке - глюк Ответов