我不关心小数点的位置,希望在需要显示最高精度时以科学计数法方式打印。然而,我希望适当四舍五入以保持固定宽度,不论左对齐还是右对齐都可以。
例如:
例如:
>>> my_format("{:10f}", 0.0000000456)
" 4.56e-08"
>>> my_format("{:10f}", 12.345678987654321)
" 12.345679"
#or "12.34567890" because significant digits
#but not "1.2346e+01", since it is less accurate than the above representations
>>> my_format("{:10f}", 12345678987654321)
"1.2345e+16"
编辑为了澄清例子,width
格式说明符并没有提供固定宽度。它提供了一个最小宽度。如何获取一个固定宽度的表示形式?
<= 3.5
,则可以将其替换为'{{v:.{length}g}}'.format(length=length).format(v=v)
(下一个也是类似)。 - a_guest%
格式;类似这样的:'%.*g' % (length, v)
应该可以工作。 - Sam Mason0.123456789
怎么处理?它返回的结果没有变化,总长度12(>10)。 - a_guest{:.10g}
去掉了尾随零,因此多余的长度计算不准确。我刚刚发现你可以通过使用{:#.10g}
保留尾随零 ("“#”选项会导致使用“备用形式”进行转换。[...] 此外,在 'g' 和 'G' 转换中,结果中不会删除尾随零。")。因此,您可以使用先前的解决方案,在第一个格式化字符串中添加#
并保持第二个不变。 - a_guest