Price fraction: Difference between revisions
Content added Content deleted
No edit summary |
(Add Quackery) |
||
Line 3,367: | Line 3,367: | ||
else: lo = mid+1 |
else: lo = mid+1 |
||
return lo</lang> |
return lo</lang> |
||
=={{header|Quackery}}== |
|||
This program uses the bignum rationals provided by <code>bigrat.qky</code>, so it avoids the pitfalls of storing money as floating point numbers. |
|||
<lang quackery>[ $ 'bigrat.qky' loadfile ] now! |
|||
[ 2over 2over v< if 2swap 2drop ] is vmax ( n/d n/d --> n/d ) |
|||
[ 100 1 v* 1 1 v- |
|||
0 1 vmax 5 1 v/ / |
|||
[ table |
|||
10 18 26 32 38 |
|||
44 50 54 58 62 |
|||
66 70 74 78 82 |
|||
86 90 94 98 100 ] 100 ] is scale ( n/d --> n/d ) |
|||
[ swap echo sp echo ] is br ( n/d --> ) |
|||
[ 2dup br say ' --> ' |
|||
scale br cr ] is test ( n/d --> ) |
|||
0 100 test |
|||
50 100 test |
|||
65 100 test |
|||
66 100 test |
|||
100 100 test |
|||
7368 10000 test |
|||
( Show how to enter and display results as a decimal too. ) |
|||
$ '0.7368' dup echo$ |
|||
say ' --> ' |
|||
$->v drop scale |
|||
2 point$ echo$</lang> |
|||
{{out}} |
|||
<pre> |
|||
0 100 --> 10 100 |
|||
50 100 --> 62 100 |
|||
65 100 --> 74 100 |
|||
66 100 --> 78 100 |
|||
100 100 --> 100 100 |
|||
7368 10000 --> 82 100 |
|||
0.7368 --> 0.82 |
|||
</pre> |
|||
=={{header|R}}== |
=={{header|R}}== |