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,. 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 < 0.06 := 0.1<br>
>= 0.06 < 0.11 := 0.18<br>
>= 0.11 < 0.16 := 0.26<br>
>= 0.16 < 0.21 := 0.32<br>
>= 0.21 < 0.26 := 0.38<br>
>= 0.26 < 0.31 := 0.44<br>
>= 0.31 < 0.36 := 0.5<br>
>= 0.36 < 0.41 := 0.54<br>
>= 0.41 < 0.46 := 0.58<br>
>= 0.46 < 0.51 := 0.62<br>
>= 0.51 < 0.56 := 0.66<br>
>= 0.56 < 0.61 := 0.7<br>
>= 0.61 < 0.66 := 0.74<br>
>= 0.66 < 0.71 := 0.78<br>
>= 0.71 < 0.76 := 0.82<br>
>= 0.76 < 0.81 := 0.86<br>
>= 0.81 < 0.86 := 0.9<br>
>= 0.86 < 0.91 := 0.94<br>
>= 0.91 < 0.96 := 0.98<br>
>= 0.96 < 1.01 := 1.00<br>
 
=={{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 )
1,150

edits