Beer pouring is inexact. 500 ML is never 500ML. A system based on halfs is inexact but more accurate.
The error has nothing to do with units of measurements chosen. You cannot measure exactly 1.(0) gallon [1.0000000000… gallon with infinite number of zeroes] of liquid with absolute accuracy either.
In engineering this would be resolved with something like 500 ± 10 mL.
In consumer goods there are either regulations or you get, say, 505 mL so you have nothing to complain about. And you would never be able to tell the difference.
By the way, ML is megaliter. Milliliter is mL.
[1] unfortunately https://en.wikipedia.org/wiki/Tun_(unit) leaves me no wiser as to what volume the unit "shit tun" might measure.