【问题标题】:How can I stop printing a float 3 spaces after decimal? [duplicate]如何停止打印小数点后 3 个浮点数? [复制]
【发布时间】:2014-08-12 01:33:39
【问题描述】:

对不起,我知道这一定是重复的,我找不到它在哪里发布。请随时将我链接到原始问题并将其标记为重复。

我想在小数点后打印 3 位数字。 例如:

number = 523.637382

我想打印:523.637 我觉得我可以使用类似的东西

print(str(number)[:7])
>>>523.637

但是,如果小数点前的数字不是 3 位小数,这将不起作用。

奖励积分: 这会容易吗?

number = 500.220
#magic
>>>500.22

number = 500.2000003
#magic
>>>500.2

【问题讨论】:

  • 在 Java 中,您可以使用 %.2f 等占位符来格式化字符串,以更改输出变量应该有多少小数/宽度/等...也许在 python 中存在类似的东西?

标签: python


【解决方案1】:

可以做到这一点的(内置)函数是round

>>> number = 523.637382
>>> rounded = round(number, 3) # 3 decimal places, for example
>>> rounded
523.637

这已经回答了例如here.

回答您问题的第二部分的好消息是,round 函数会自动删除尾随零。如果您要定义一个新变量,则保留零要困难得多:您需要 decimal 模块;不过这里好像没必要。

>>> number = 523.60000001
>>> rounded = round(number, 3)
>>> rounded
523.6

【讨论】:

    【解决方案2】:
    print("%.3f" % number)
    

    或者,使用新式格式,

    print("{0:.3f}".format(number))
    

    【讨论】:

    • 甚至format(number, ".3f"),因为它只是一个值。
    【解决方案3】:

    如果您要像上面那样打印str,您可以使用字符串插值:

    number = 33.33333
    print("{0:.3f}".format(number))
    #=> 33.333
    

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多