A friend of mine runs a pharmacy.   He has a specialized function in his Dispensary application which receives a decimal value of currency and replaces it to a standard value.   This value is regulated by a government department.



Task

Given a floating point value between   0.00   and   1.00,   rescale according to the following table:

>=  0.00  <  0.06  :=  0.10
>=  0.06  <  0.11  :=  0.18
>=  0.11  <  0.16  :=  0.26
>=  0.16  <  0.21  :=  0.32
>=  0.21  <  0.26  :=  0.38
>=  0.26  <  0.31  :=  0.44
>=  0.31  <  0.36  :=  0.50
>=  0.36  <  0.41  :=  0.54
>=  0.41  <  0.46  :=  0.58
>=  0.46  <  0.51  :=  0.62
>=  0.51  <  0.56  :=  0.66
>=  0.56  <  0.61  :=  0.70
>=  0.61  <  0.66  :=  0.74
>=  0.66  <  0.71  :=  0.78
>=  0.71  <  0.76  :=  0.82
>=  0.76  <  0.81  :=  0.86
>=  0.81  <  0.86  :=  0.90
>=  0.86  <  0.91  :=  0.94
>=  0.91  <  0.96  :=  0.98
>=  0.96  <  1.01  :=  1.00



' FB 1.050.0 Win64
 
Function rescale(price As Double) As Double
  If price < 0.00 OrElse price > 1.00 Then Return price
  Select Case price
    Case Is < 0.06 : Return 0.10
    Case Is < 0.11 : Return 0.18
    Case Is < 0.16 : Return 0.26
    Case Is < 0.21 : Return 0.32
    Case Is < 0.26 : Return 0.38
    Case Is < 0.31 : Return 0.44
    Case Is < 0.36 : Return 0.50
    Case Is < 0.41 : Return 0.54
    Case Is < 0.46 : Return 0.58
    Case Is < 0.51 : Return 0.62
    Case Is < 0.56 : Return 0.66
    Case Is < 0.61 : Return 0.70
    Case Is < 0.66 : Return 0.74
    Case Is < 0.71 : Return 0.78
    Case Is < 0.76 : Return 0.82
    Case Is < 0.81 : Return 0.86
    Case Is < 0.86 : Return 0.90
    Case Is < 0.91 : Return 0.94
    Case Is < 0.96 : Return 0.98
  End Select
  Return 1.00
End Function
 
For i As Integer = 1 To 100
  Dim d As Double = i/100.0
  Print Using "#.##"; d;
  Print " -> ";
  Print Using "#.##"; rescale(d);
  Print "  ";
  If i Mod 5 = 0 Then Print
Next 
 
Print
Print "Press any key to quit"
Sleep