首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求查出最接近的数。解决方案

2012-02-08 
求查出最接近的数。。。在数据库有这样的值272931333537.....79现知值一:13求13的倍数在上面的数值中正好合适

求查出最接近的数。。。
在数据库有这样的值

27   29   31   33   35   37.....79

现知值一:13   求13的倍数在上面的数值中正好合适或者最接近,只能大于或等于;结果为39
        值二:28   结果为29


求算法

[解决办法]
这样更好一些:
Function getit(ByVal mynum As Integer, ByVal nums As String) As String
Dim i As Long, s, m As Integer, t() As String
ReDim t(mynum - 1)
s = Split(nums)
For i = 0 To UBound(s)
t(s(i) Mod mynum) = t(s(i) Mod mynum) & ", " & s(i)
Next
getit = Join(t, " ")
getit = Mid(Split(Trim(getit), " ")(0), 2)
End Function

Private Sub Command1_Click()
MsgBox getit(13, "27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 ")
MsgBox getit(28, "27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 ")
End Sub

[解决办法]
Option Explicit

Private Sub Command1_Click()
Dim s As String
Dim Result As Long

s = "27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 "
Result = FindNum(s, 13)
Print Result
Result = FindNum(s, 28)
Print Result
End Sub

Private Function FindNum(s As String, n As Long) As Long
Dim Num() As String
Dim i As Long

Num = Split(s)
For i = 0 To UBound(Num)
If Num(i) Mod n = 0 Then
FindNum = Num(i)
Exit Function
End If
If Num(i) Mod n = 1 Then
FindNum = Num(i)
Exit Function
End If
Next

End Function

'IDE中调试过的。

热点排行