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



include c:\cxpl\codes;  \intrinsic 'code' declarations
 
func real Price(V);     \Convert to standard value
real V;
[V:= V + 0.001;         \avoids possible rounding error i.e. 0.059999999
case of
  V < 0.06: ret 0.10;
  V < 0.11: ret 0.18;
  V < 0.16: ret 0.26;
  V < 0.21: ret 0.32;
  V < 0.26: ret 0.38;
  V < 0.31: ret 0.44;
  V < 0.36: ret 0.50;
  V < 0.41: ret 0.54;
  V < 0.46: ret 0.58;
  V < 0.51: ret 0.62;
  V < 0.56: ret 0.66;
  V < 0.61: ret 0.70;
  V < 0.66: ret 0.74;
  V < 0.71: ret 0.78;
  V < 0.76: ret 0.82;
  V < 0.81: ret 0.86;
  V < 0.86: ret 0.90;
  V < 0.91: ret 0.94;
  V < 0.96: ret 0.98
other       ret 1.00;
];
 
[Format(1,2);
RlOut(0, Price(0.0599));  CrLf(0);
RlOut(0, Price(0.10));  CrLf(0);
RlOut(0, Price(1.0));  CrLf(0);
]