I would suggest having a look at creating your own userata for
high precision monetary values, and implementing a metatable
with overrides for the basic Lua operations.
You may also end up having to add functions to create instances
of the type etc. See the C API and userdata secions in the Blue PiL
for details.
I recently discovered one disadvantage of such an approach: relational
operators are only possible on operands of the same type. In other
words, you can't compare such a userdata object with a regular number
since it is by definition false. This might or might not be a problem,
depending on your specific needs but it's certainly something to keep
in mind.