It would make sense if scanf() had the equivalent flag to printf() to
make number printing and parsing at least potentially orthogonal.

That is not an easy thing to do because of local (er, locale:) conventions.  See https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html for examples.

Having a canonical input and output format, which is converted by filters just before/after the human sees the numbers, seems the only way to make this work globally.