【问题标题】:Python print a float with a given number of digitsPython打印具有给定位数的浮点数
【发布时间】:2018-06-08 08:49:21
【问题描述】:

我在 Python 中有一些浮点值。我想打印它们以使它们具有相同的位数(整数和小数部分的总和)

例如考虑这两个数字:

a = 12.123456
b = 123.1234567

我想打印它们的值,格式如下:

12.1234
123.123

使它们具有相同的长度。

一种简单的方法如下:

if (val>100):
    print("%0.3f" % val)
else:
    print("%0.4f" % val)

有没有更聪明的方法可以在python中同时控制整数和小数位数,从而使生成的字符串保持不变?

【问题讨论】:

    标签: python-3.x printing floating-point formatting


    【解决方案1】:

    整数和小数的格式都是

    >>> '{:06.2f}'.format(3.141592653589793)
    '003.14'
    

    .(此处为6)之前的部分表示填充的总长度(包括.),.2f此处)之后的部分表示小数点后的数字。 希望能帮助到你。查看link

    【讨论】:

      【解决方案2】:

      你可以尝试做这样的事情

      print('{:.6}'.format(val))
      

      【讨论】:

      • 实际上它在大多数情况下都有效,但如果整数部分为 0,则无效:例如,它在 0.678923156 的情况下不起作用,因为它打印 6 个小数而不计算 0 整数部分
      • 它看起来有点吓人,但适用于开头为零的情况print(('{:.6}' if int(val) else '{:.5}').format(val)) {:.5} - 如果整数部分等于零,这将适用,在其他情况下 {:.6 }
      【解决方案3】:

      好的,我想到了这个基本上是一种变通方法的解决方案:

      LIM = 7;
      a = 12.123456
      b = 123.1234567
      print(str(a)[:LIM])
      print(str(b)[:LIM])
      

      【讨论】:

        猜你喜欢
        • 2023-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多