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



class PriceFraction {
  function : Main(args : String[]) ~ Nil {
    for(i := 0; i < 5; i++;) {
      f := Float->Random();
      r := SpecialRound(f);
      "{$f} -> {$r}"->PrintLine();
    };
  }
 
  function : SpecialRound(inValue : Float) ~ Float {
    if (inValue > 1) {
      return 1;
    };
 
    splitters := [  
      0.00 , 0.06 , 0.11 , 0.16 , 0.21 , 
      0.26 , 0.31 , 0.36 , 0.41 , 0.46 , 
      0.51 , 0.56 , 0.61 , 0.66 , 0.71 , 
      0.76 , 0.81 , 0.86 , 0.91 , 0.96 ];
 
    replacements := [ 
      0.10 , 0.18 , 0.26 , 0.32 , 0.38 ,
      0.44 , 0.50 , 0.54 , 0.58 , 0.62 , 
      0.66 , 0.70 , 0.74 , 0.78 , 0.82 , 
      0.86 , 0.90 , 0.94 , 0.98 , 1.00 ];
 
    for(x := 0; x < splitters->Size() - 1; x+=1;) {
      if (inValue >= splitters[x] & inValue < splitters[x + 1]) {
        return replacements[x];
      };
    };
 
    return inValue;
  }
}