On second thought, I expect expr() is also using 64-bit floats internally. However, data passed through patch cords is truncated to 32-bits.
It may be that Max 6.1 in 64-bit mode will pass floats through patch cords with 64-bit precision. I haven’t yet worked enough with 64-bit mode to know for sure (getting there). You didn’t state whether you are using 6.1 in 32-bit or 64-bit mode.
In case you haven’t seen any of the many, many posts on this subject, 32-bit floating point is only accurate to about 6 significant decimal places. So everything after 1731.23 is just noise.