【问题标题】:python printing 2 numbers before commapython在逗号前打印2个数字
【发布时间】:2014-10-29 19:32:11
【问题描述】:

我想打印精确到点前 2 位和后 3 位的数字。

例子:

1232.352232  
9.1  

将显示:

32.352  
09.100  

我知道

print "%.3f" % 32.352

会在点之后显示 3 位数字,但是如果它小于 2 位数字,如何在 0 点之前获得 2 位数字?

【问题讨论】:

  • 如果我们谈论精度,第一个肯定是1200,352
  • Python 在浮点数中使用小数点,而不是逗号。
  • 没有lf 格式。你是说f吗?
  • 对不起,我把这个逗号弄错了,我的意思是小数点。

标签: python printing precision comma


【解决方案1】:

您可以指定输出的总宽度;如果您包含前导 0,则该数字将用零填充以匹配该最小宽度:

"%06.3f" % float_number

演示:

>>> for float_number in (1232.352232, 9.1):
...     print "%06.3f" % float_number
... 
1232.352
09.100

请注意,数字是最小宽度!如果您需要截断浮点数本身,则需要使用切片:

("%06.3f" % float_number)[-6:]

如果长度超过 6,这将截断字符串以从开头删除字符:

>>> for float_number in (1232.352232, 9.1):
...     print ("%06.3f" % float_number)[-6:]
... 
32.352
09.100

您可能还想查看format() function;此功能允许您将same formatting syntax 应用为str.format() formatting methodformatted string literals;浮点数的语法基本相同:

>>> for float_number in (1232.352232, 9.1):
...     formatted = format(float_number, '06.3f')
...     print(formatted[-6:], formatted)
...
32.352 1232.352
09.100 09.100

【讨论】:

  • 我尝试输入 "%02.3f" %1.1234 并没有返回 01,123
  • @SebastianB:这是因为第一个数字必须设置为 total 宽度。包括小数! "%06.3f" % 1.1234 工作。
  • 哇,谢谢它的工作!它真的帮助我理解它:) +1 应得的。 :)
  • 有没有一种简洁的方法可以将它保存到字符串变量中?
  • @Aaronrobeson:我不确定你的意思。 str % ... 操作返回一个新的字符串对象,只需将该新对象分配给一个变量即可。
【解决方案2】:
x = "9,1"

def displayNum(num):
    f,s = num.strip().split(',')
    f = '0'*(2-len(f))+f if len(f) < 2 else f[-2:]
    s = s + '0'*(3-len(s)) if len(s) < 3 else s[:3]
    return ",".join([f,s])

print(displayNum(x))

09,100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多