in reply to Rounding Errors

The truncation problem you mention with large decimal numbers is a hardware(platform) issue. Its because of the way floating point math is done, its simulated really. The FPU is a processor/set of optimized operations that do integer math behind the scenes.

Floating point numbers need to be represented in binary, but not just the number itself. Things like whether they're positive or negative, and their power(decimal position).

Standardized schemes are used internally for doing this, but each time the computer encounters a floating point number it needs to digest/squish it down into the special binary format. So one floating point number(i.e. 1.234) is represented with a few binary numbers(values) - the number, its power, and sign. Its during this conversion process that things get truncated. Depending upon the bit width of the FPU(as you mentioned), the conversion process will differ in the amount of truncation that needs to be done. I believe the computer doesn't do any rounding(just truncation), but this truncation could mess up any rounding you tried to do within your code.

To avoid the truncation you can do everything with whole numbers(integer values), its just more work. Any floating point math equation can be solved using whole numbers(multiplying everything out to get rid of the decimal).

There is a similar problem with large integers when the values surpass what can be natively reprsented by the bit width(if its 32bit, something greater than 2^32) But thats much much less of an issue...

DISCLAIMER: This is all simplified..I'm not into electrical engineering, not an expert in the area. Just taking a shot at answering the question :)
hope this all helps - blueAdept