Part of the problem is that 2.999999999999994893399 and 2.9999999999999948933990 are not parsed as the same number. The reason for this is likely the parsing algorithm that R uses. I believe it goes something like this:
When you see a number containing a decimal point, ignore the decimal and read the number as an integer, then divide by the appropriate power of 10.
So 2.999999999999994893399 is read as 2999999999999994893399 and divided by 10^21. But 2999999999999994893399 is too big to represent exactly, so it becomes 2999999999999994757120 after reading, and that becomes 2.9999999999999946709 after the division (since 10^21 can't be stored exactly either).
On the other hand, 2.9999999999999948933990 is read as 29999999999999948933990 and divided by 10^22. Rounding is different, because the number is 10 times bigger: the integer becomes 29999999999999949668352 and after division it is 2.999999999999995115.
Some of the numbers I show might be different on your system: most of this is handled at a very low level, and could be different depending on the system library and hardware.