The problem is that (a) all intermediate results are converted to currency (and rounded to 4 digits), and (b) you divide first. You should do the multiplication first in such cases. It also often helps to convert intermediate results to normal numbers, with the mton() function.
>It is expected that result of calculations may be slightly different depending on the initial precision, but the difference in tens units?
>Anyone can shed light on it?
>
>
>* Tested in versions VFP5, VFP7, VFP 9 and VFP 9 Sp1
>CLEAR
>CLOSE tables all
>CREATE CURSOR testcrs (fldn N(12,4), fldcur Y)
>ln=300000
>
>INSERT INTO testcrs VALUES (ln,ln)
>n1=43.05
>n2=44.06
>
>?"Variable: ", n2/n1 * ln, ln * n2/n1
>?"Numeric field: ", n2/n1 * fldn, fldn * n2/n1
>
>?"Currency field: ", n2/n1 * fldcur, fldcur * n2/n1
>?"Currency2Numeric: ", n2/n1 * MTON(fldcur), MTON(fldcur) * n2/n1
>
>
>
>Thanks in advance
>
>Yuri Rubinov
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)