So I gave this a bit more thought and realised it isn't the rounding process that is the problem and the solution is relatively simple.
The existing rounding process works as we expect e.g. 0.5 values are rounded up.
The problem we see is multiple values in a Linear dimension chain being rounded up to accumulate to an oversized length.
The solution is a simple case of putting the dimension points in context. Rather than rounding the distance between the two points, the two points need to be rounded in context of the Linear chain origin and then the difference determined.
So as an example: Say we have three points at 13.5 units separation - 13.5, 27.0, 40.5
If we apply the above solution then:
Point 1 rounds to 14.0
Point 2 rounds to 27.0 as it already an integer value
Point 3 rounds to 41.0
We would then see a Linear chain of dimension values reading 14, 13, 14, which correctly add up to 41 as would be displayed in a single distance overall measurement. Under the current arrangement we would end up with 3 values of 14 which accumulate to 42 when rounded.
This doesn't just work with 0.5 unit values, it operates correctly at all values...
Values of 13.2 would round to 13, 26, 40 and display as 13, 13, 14.
Values of 13.8 would round to 14, 28, 41 and display as 14, 14, 13.
Apple iMac macOS Ventura / AC26UKI (most recent builds)