Здраствуйте.
Есть такая задача:
Стандартные диаметры: 100, 125, 140, 160 и т.д.
Значение 120 необходимо округлить до ближайшего стандартного диаметра.
Ответ должен быть - 125
Если 138, то естественно - 140
Если 104, то 100.
Спасибо.
'x = твое число
X1= x/100
X2 = (x- X1*100)/10
X3 = x - X1*100 - X2*10
if X3>5 then X2+=1
if X3 <5 then X3=0
if X3 = 5 then X3 = 5
X= X1*100 +X2*10 +X3
Private Function GetClosest(ByVal arr() As Integer, ByVal value As Integer) As Integer
Dim pos As Integer = Array.BinarySearch(arr, value)
If pos >= arr.GetLowerBound(0) Then
Return arr(pos)
Else
pos = Not pos
Select Case True
Case pos > arr.GetUpperBound(0)
Return arr(arr.GetUpperBound(0))
Case pos = arr.GetLowerBound(0)
Return arr(arr.GetLowerBound(0))
Case Else
If Math.Abs(arr(pos) - value) > Math.Abs(arr(pos - 1) - value) Then
Return arr(pos - 1)
Else
Return arr(pos)
End If
End Select
End If
End Function
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
MsgBox(GetClosest(New Integer() {100, 125, 140, 160}, 120))
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 60