Two possible causes:
That is normal and relies to number precision.
The precision (of float numbers) decreases as larger the distance to zero.
Near zero you can handle tiny fractions of a number.
The storage for numbers is limited and typically constant. Imagine you have a form with 5 digits. You can have ten possible characters to describe digits [0…9]. This means you have 1010101010 = 10^5 = 10000 possible combinations which can represent unique numbers. You can’t have more numbers.
You as human would say: I can express 10000 numbers.
But it does not say what numbers that are. It just limits on 10000 pieces.
This can be fixed stepsize:
0,1,2, … 9999, 10000
with different begin:
-4999, -4998, … 0, … 4999, 5000
-5000, -4999, -4998 … 0, … 4999
and other step sizes:
0.0, 0.1, … 999.0, 1000.0
it depends what you want to achieve. The limit of 10000 possible numbers is always there.
I hope you see to get small numbers you need to decrease the step size. Why not move the decimal dependent on the dimension of the number? E.g. a single cm is typically not so important when you deal with km. So we can “round” it. This increases the range of values (into the km range) but still allows us to express small numbers (at mm range). The overall limit is still there. So we by it that numbers around 0 are more precise than numbers near the outer limits.
the range can be like that:
-4900, -4801, … -0.0004, -0.0001, 0.0000, 0.0001, 0.0004, … 4801, 4900, 5000
The BGE uses a similar system (with more numbers and binary representation).
When you model objects far away from scene origin, you will discover precision issues,
So I strongly advice to keep you camera near the scene origin (raw estimate: the origin should be somewhere the camera’s frustum length (if it is 100BU be within 100 BU)).
Btw. Typical implementations of Z-Buffer have increased precision near the camera. If you think about it it makes sense as little details are more visible when you are close to them. This also means z-Buffer problems (see Z-Buffer fighting) are earlier visible near the far-plane.
Only worry about that when you discover problems.
When you get problems, you could move all objects of the scene that the camera is near the origin again.
A similar thing to number precision is Z-Buffer precision. The Z-Buffer (see wikipedia) is used to determine if a pixel should be drawn or not. It is a very fast method to see if another pixel is in front of the current one or not.
This is bought by a lot of memory as you need to store the distance for each single pixel on the screen. As less memory spend as less precise the distance check is. If pixels of two faces are very close to each other the Render can’t decide which covers the other. This can result in an incorrect and visible calculation.
To increase the precision of your z-Buffer you need to decrease the distance between near- and far-plane of the camera. Yes, it means you can’t see further than the far-plane.
Find a balance between small details and the view range.
I hope this helps a bit.