35 lines
1.3 KiB
AppleScript
35 lines
1.3 KiB
AppleScript
-- 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
|