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



-- This handler just returns the standardised real value. It's up to external processes to format it for display.
 
on standardisePrice(input)
    set integerPart to input div 1.0
    set fractionalPart to input mod 1.0
 
    if (fractionalPart is 0.0) then
        return input as real
    else if (fractionalPart < 0.06) then
        return integerPart + 0.1
    else if (fractionalPart < 0.16) then
        return integerPart + 0.18 + (fractionalPart - 0.06) div 0.05 * 0.08
    else if (fractionalPart < 0.36) then
        return integerPart + 0.32 + (fractionalPart - 0.16) div 0.05 * 0.06
    else if (fractionalPart < 0.96) then
        return integerPart + 0.54 + (fractionalPart - 0.36) div 0.05 * 0.04
    else
        return integerPart + 1.0
    end if
end standardisePrice
 
-- Test code:
set originals to {}
set standardised to {}
repeat 20 times
    set price to (random number 100) / 100
    set end of originals to text 2 thru -2 of ((price + 10.001) as text)
    set end of standardised to text 2 thru -2 of ((standardisePrice(price) + 10.001) as text)
end repeat
 
set astid to AppleScript's text item delimiters
set AppleScript's text item delimiters to ", "
set output to linefeed & "Originals:    " & originals & linefeed & "Standardised: " & standardised
set AppleScript's text item delimiters to astid
return output