Price fraction: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: changed the first comment.) |
(Added AppleScript.) |
||
Line 226: | Line 226: | ||
Converted to standard : 0.54 |
Converted to standard : 0.54 |
||
</pre> |
</pre> |
||
=={{header|AppleScript}}== |
|||
The task description doesn't make a lot of sense, implying that the pharmacist charges no more than 1.00 for his wares and that even whole-number prices are nudged by 0.10 and odd ones aren't. This offering takes any decimal currency value and standardises just the fractional part: |
|||
<lang applescript>-- This handler just returns the standardised real value. Its 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</lang> |
|||
{{output}} |
|||
<lang applescript>" |
|||
Originals: 0.49, 0.79, 1.00, 0.83, 0.99, 0.23, 0.12, 0.28, 0.72, 0.37, 0.95, 0.51, 0.43, 0.52, 0.84, 0.89, 0.48, 0.48, 0.30, 0.01 |
|||
Standardised: 0.62, 0.86, 1.00, 0.90, 1.00, 0.38, 0.26, 0.44, 0.82, 0.54, 0.98, 0.66, 0.58, 0.66, 0.90, 0.94, 0.62, 0.62, 0.44, 0.10"</lang> |
|||
=={{header|AutoHotkey}}== |
=={{header|AutoHotkey}}== |