Not going to contradict, but rather to offer my condolences by way of explanation:
Such is many things in life, often decisions made for historic reasons, perhaps they were right at the time, but passed down through the ages, we have to deal with their consequences.
In this case, probably way back in the Protel days, fixed-point integer coordinates (or god forbid, BCD?) were used, and fractional-mil accuracy was wildly more than sufficient.
The file format hasn't changed much over the years, I mean... it has, greatly, but largely by way of expansion, keeping old elements and formats that continued to work, and adding features on top of that. If it ain't broke, don't fix it. If fixed-point arithmetic worked for two decades, surely it'll work for three?
So, there are rounding errors, yeah.
And also a limit on the maximum size of a design sheet. Which I think has been upped in recent years? But to be fair, as just outright dumb as it is to have such an arbitrary limit on what ought to be position-independent* vector graphics -- it is pretty goddamn hard to find someone who can fab a ten-foot PCB at all.
I don't know if AD uses floats internally, but sooner or later it has to get into either the in-memory objects, or the on-disk file, as whatever rounding format they use.
*But, on that note... to be perfectly fair, integers are position-independent. Floats are the ugly ducks here. At 32 bits, you might not mind anyway (rounding error starts to become annoying (~µin) at distances from the origin of, what -- several meters?), but to be perfectly precise: floats are the number system which violates arithmetic rules, not integers!**
**When overflow is avoided. To be perfectly perfectly precise, fixed-size "integers" are modular numbers. It's a shame few programming languages treat them this way, because it's so powerful, and fundamental (to the CPU), to do so. But, alas.
So, your frustrations can be explained as misinterpretation: what you thought should be plain old numbers, is actually a rounded, integer (or modular..) system.
Not that explaining a frustration with an internal failing, or highlighting ones' ignorance, is exactly helpful, I know. But, again, my condolences by way of explanation -- we all share these frustrations, and it's up to ourselves how we react to them. Your response to these frustrations is perfectly valid. Correct, even.
I will say, in situations like these -- the frustration exists, regardless of whether we like it or not. Whether it causes us to lash out or whatever -- that is however a decision we still have control over.
Anyway, as for ways to deal with it -- unsatisfying I know, but setting clearances to slightly off your desired limit, and snapping objects to grid otherwise (yes, tedious I know*), gives some wiggle room for rounding errors.
I've noticed multi-routing tends to leave weird corners, like, sometimes I grab one trace in a bus and the whole rest of the bus suddenly pops out with an extra corner going *eeuurt* around some imagined blemish. Or, sometimes I grab a trace and the route magically doubles underneath my cursor, and I'm only dragging one of the two pieces thus duplicated?? There's some weird internal state confusion at times, and sometimes it's worth getting a rough route in place, then replacing each trace with singly routed traces (P, T) just to clear those dubious traces out of the design.
And, after a couple hours of shoving components and traces, and placing and deleting and replacing objects, the overall internal state starts to decay and you start to get
Information
popups. Time to reboot it. Well, that just happens, unfortunately; whatever it is, it's in my experience most often some kind of confusion of pointers, maybe a use-after-free, who knows, but it seems it's rare enough they've never been able to fix it. It can take hours or days of continuous operation before it shows up, or maybe mere minutes if you're particularly skilled at mis-operating your software, so to speak. Well, like I said -- standard frustrations, alas. It is what it is.
*Personally, I like the tedium of shoving traces. I would argue it gives me time to reflect on the design overall, and maybe I'll think of some other place to place and route things, and arrive at a better design later. Rip-up and re-route is always faster than the first time you do it, or, well, it is for me at least; it's not that that initial effort was wasted, it's still contributing to the finished design, even if merely by way of ruling out only one very specific configuration.
Tim