Price fraction: Difference between revisions
added BASIC; reformatted the table at the top
(Add Python solution.) |
(added BASIC; reformatted the table at the top) |
||
Line 1:
{{task|Financial operations}}
A friend of mine runs a Pharmacy. He has a specialised rounding function in his Dispensary application which receives a decimal value of currency and forces it to a standard value
Task: Given a floating point value between 0.00 and 1.00, rescale according to the following table:
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
>=
=={{header|BASIC}}==
{{works with|QBasic}}
This could also be done by building an array, but I felt that this was simpler.
<lang qbasic>DECLARE FUNCTION PriceFraction! (price AS SINGLE)
RANDOMIZE TIMER
DIM x AS SINGLE
x = RND
PRINT x, PriceFraction(x)
FUNCTION PriceFraction! (price AS SINGLE)
'returns price unchanged if invalid value
SELECT CASE price
CASE IS < 0!
PriceFraction! = price
CASE IS < .06
PriceFraction! = .1
CASE IS < .11
PriceFraction! = .18
CASE IS < .16
PriceFraction! = .26
CASE IS < .21
PriceFraction! = .32
CASE IS < .26
PriceFraction! = .38
CASE IS < .31
PriceFraction! = .44
CASE IS < .36
PriceFraction! = .5
CASE IS < .41
PriceFraction! = .54
CASE IS < .46
PriceFraction! = .58
CASE IS < .51
PriceFraction! = .62
CASE IS < .56
PriceFraction! = .66
CASE IS < .61
PriceFraction! = .7
CASE IS < .66
PriceFraction! = .74
CASE IS < .71
PriceFraction! = .78
CASE IS < .76
PriceFraction! = .82
CASE IS < .81
PriceFraction! = .86
CASE IS < .86
PriceFraction! = .9
CASE IS < .91
PriceFraction! = .94
CASE IS < .96
PriceFraction! = .98
CASE IS < 1.01
PriceFraction! = 1!
CASE ELSE
PriceFraction! = price
END SELECT
END FUNCTION</lang>
Sample outputs (run 5 times):
.7388727 .82
.8593103 .9
.826687 .9
.3444635 .5
.0491907 .1
=={{header|Clipper}}==
<lang dbase>FUNCTION PriceFraction( npQuantDispensed )
|