@jeff.wangD95HG
Sorry, but I think you're oversimplifying it. When doing it the csv way, you may or may not, be successful moving the vertices, but it doesn't consider the final geometric shape and how the coordinates of the vertices will change.
Here's an example (refer to diagram below):
RED rectangle 0.146 x 0.114 (Width x Height) = Actual dimensions with 3 decimals.
GREEN rectangle 0.15 x 0.11 (W x H) = Dimensions after rounding to 2 decimals.

How do the red and green rectangles relate to one another? Given the new dimension after rounding, you may, if you wish, position the rectangles far enough away so their vertices don't overlap. (I don't think you'd do that, but you could if you wanted to.)
Given the circumstances, there's a maximum of one vertex (coordinates) that can be shared between the two rectangles. In this example you can't have more than two vertices overlapping after rounding--it's mathematically impossible.
So the million dollar question is, How do you move the resultant geometry once the new vertices are computed?' And that's still under the assumption (huge assumption) the vertices can be moved in a logical, consistent and rational way.
If you overlap the centroids, is it OK when no vertices overlap?
If you overlap one vertex, how do you choose which one?
What if it's not a rectangle but an octagon, which vertex will you choose?
If you have a cluster of polygons, will some overlap after rounding due to an increase in area? Will some fail to overlap due to a decrease in area?
Chicagolooper
