description (per CustomStringConvertible) seems to work fine, but of course doesn't produce localised outputs (as expected per its purpose). I want localised outputs, which is normally (for the built-in numeric types) done via the formatted(…) methods. These do exist on BigInt and BigUInt, but produce erroneous results at 2^63 and higher (9,223,372,036,854,775,808).
e.g. 2^63 renders as "9,223,372,036,854,775,807" (which is 2^63 - 1, which happens to be Int64.max).
e.g. 1e25 renders as "9,999,999,999,999,999,000,000,000".
It appears the formatting's precision is somehow limited to the first (highest-order) Int64 word, even though it does show the correct magnitude ("rounding" errors notwithstanding).