Я не уверен, что именно вы находите здесь сложным - вы получаете именно те результаты, которые указаны, например. здесь . E.g.:
In [32]: "%.2g" % 20.3
Out[32]: '20'
In [33]: "%.2g" % 1.2
Out[33]: '1.2'
В каждом случае вы просили, чтобы все 2 цифры отображались, и вот что происходит (обе цифры идут перед конечной точкой в одном случае, одна до и одна после в другом, но это очевидное следствие соответствующих величин чисел).
Когда вы запрашиваете 20 цифр, вам показывается 20 цифр - большинство из них, конечно, не имеют смысла (с плавающей точкой двойной точности IEEE подходит только для 16 цифр точности), поэтому более разумно спросить за меньшее. Вы, конечно, знаете, что числа с плавающей точкой представлены в двоичном виде, как объяснено здесь , верно? Используйте десятичное число (конечно, намного медленнее, поскольку то, что поставляет аппаратное обеспечение вашего компьютера - двоичная с плавающей запятой, все десятичные версии должны быть синтезированы в программном обеспечении) - это то, что вам нужно, это числа с десятичным представлением (например, вычисления).