Price fraction: Difference between revisions

added ocaml
(added ocaml)
Line 221:
<lang j> priceFraction 0.34 0.070145 0.06 0.05 0.50214 0.56 1 0.99 0
0.5 0.18 0.18 0.1 0.62 0.7 1 1 0.1</lang>
 
 
=={{header|OCaml}}==
 
<lang ocaml>let price_fraction v =
if v < 0.0 || v >= 1.01 then
invalid_arg "price_fraction";
let rec aux = function
| (x,r)::tl ->
if v < x then r
else aux tl
| [] -> assert false
in
aux [
0.06, 0.10; 0.11, 0.18; 0.16, 0.26; 0.21, 0.32; 0.26, 0.38;
0.31, 0.44; 0.36, 0.50; 0.41, 0.54; 0.46, 0.58; 0.51, 0.62;
0.56, 0.66; 0.61, 0.70; 0.66, 0.74; 0.71, 0.78; 0.76, 0.82;
0.81, 0.86; 0.86, 0.90; 0.91, 0.94; 0.96, 0.98; 1.01, 1.00;
]</lang>
 
<lang ocaml>let () =
let ok_tests = [
(0.3793, 0.54);
(0.4425, 0.58);
(0.0746, 0.18);
(0.6918, 0.78);
(0.2993, 0.44);
(0.5486, 0.66);
(0.7848, 0.86);
(0.9383, 0.98);
(0.2292, 0.38);
] in
Printf.printf " input res ok\n";
List.iter (fun (v,ok) ->
let r = price_fraction v in
Printf.printf " %6g %g %b\n" v r (r = ok);
) ok_tests;
;;</lang>
 
 
=={{header|Oz}}==
Line 240 ⟶ 279:
end
end</lang>
 
 
=={{header|PL/I}}==