将数字格式化为最大宽度和可变精度

时间:2018-03-02 18:35:50

标签: string python-3.x numbers number-formatting

我想将数字(整数或浮点数)格式化为具有以下要求的字符串:

  1. 总宽度必须为n
  2. 精度应该是可变的,但最小(在0和p之间)
  3. 必要时使用领先空间
  4. 使用n,开发人员(我)给出的参数,p除去尾随零的小数。

    例如,使用n = 8

    • 12.345 -> " 12.345"
    • 12345.67 -> "12345.67"
    • 123456.78 -> "123456.8"
    • 1234567.89 -> " 1234568"
    • 12.3456789 -> "12.34568"
    • 0.33333333 -> "0.333333"

    到目前为止,我有这个几乎正常工作:

    def fmt(x, n):
        ffw = "{:.{}f}".format(x, n)
        cln = ffw[:n].rstrip("0").rstrip(".")
    
        return "{:>{}s}".format(cln, n)
    

    它确实有效(除了它没有正确地对数字进行舍入),但它看起来非常复杂,我觉得有一种更简单的方法。我想念某个地方吗?

0 个答案:

没有答案