hello i have a code in vb.net and my logic is if i will input 13973.88 the nearest number is 10000 but the output was 15833 can you please help me solving this code please?
Dim data(,) = {
{0.0, 0, 1},
{0.0, 0.05, 4167},
{41.67, 0.1, 5000},
{208.33, 0.15, 6667},
{708.33, 0.2, 10000},
{1875.0, 0.25, 15833},
{4166.67, 0.3, 25000},
{10416.67, 0.32, 45833}}
Dim value = Val(TextBox18.Text)
' data.GetLength(0) is 8, so Enumerable.Range generates the numbers from 0 to 7
Dim range = Enumerable.Range(0, data.GetLength(0))
' .OrderBy orders them by the difference between value and the last column in data
Dim ordered = range.OrderBy(Function(i) Math.Abs(data(i, 2) - value)) ' 5,4,6,3,2,0,1,7
Dim nearestIndex = ordered.First ' 5
Dim value1 = data(nearestIndex, 0) ' 1875.0
Dim value2 = data(nearestIndex, 1) ' 0.25
Dim value3 = data(nearestIndex, 2) ' 11667
Dim result = (value3) ' result = 1541.75
TextBox15.Text = Math.Round(result, 2)
End If