I am well aware of the fact that floating point number have finite precision, so one needs to be careful when comparing them. Still, I find it disturbing/surprising that the following input into Mathematica 9.0.1.0
In[1]:= f[0.2] = 1;
f[0.25] = 2;
f[0.3] = 3;
f[0.35] = 4;
f[0.4] = 5;
f[0.45] = 6;
f[0.5] = 7;
Table[f[t], {t, 0.2, 0.5, 0.05}]
InputForm[%]4
leads to the output
Out[2]:= {1, 2, 3, f[0.35], 5, 6, 7}
{1, 2, 3, f[0.35000000000000003], 5, 6, 7}
Somehow 0.35
seems to be a different from the other values.
is there a way to define f
pointwise to make the above example work as one would naively expect?