有没有办法使用逗号为数千格式化数字,而不将int转换为字符串?

Opt*_*esh 0 python int formatting number-formatting python-2.7

当打印长整数时,我想添加逗号来"分离成千上万".问题是,我不想将int转换为字符串.在SO中有一些问题表明:

a = 1234567
print "The number is %s but it's converted to a string" %'{:,d}'.format(a)
Run Code Online (Sandbox Code Playgroud)

====>数字是1,342,424,242,但它被转换为字符串

我一直在寻找一种不需要转换为字符串的解决方案.例如,当我想以百分比显示数字时:

b = 0.1234
print "The Norwegian Blue prefers kippin' on it's back! %0.2f%%" % (b*100)
Run Code Online (Sandbox Code Playgroud)

====>挪威蓝更喜欢kippin'!12.34%

无论如何要做类似的事情,只能用逗号分隔?谢谢!

编辑:为了更好地解释自己,我的意思是用逗号表示数字,类似于你用%标记表示百分比的方式,在点之后只有2位小数.您不会更改数字,也不会将其转换为字符串,只会操纵显示/显示的方式.这就是我想要达到的目标.

编辑2:我不明白这里的负面情绪.我提出了一种方法来讨论某些问题并询问是否可以用不同的方式完成,这与我给出的一个例子更相似.在搜索了相当多的东西之后,我到达了这两个例子.这可能是一个菜鸟问题,但至少我是单独去做,并在向社区发表讲话之前寻找解决方案.除了不知道答案之外,不确定我做错了什么.Tnx用于阅读.

Red*_*edX 8

你自己的例子能够做你想做的事.只需正确编写它而不混合格式样式:

a = 1234567
print "The number is {:,d} but it's converted to a string".format(a)
Run Code Online (Sandbox Code Playgroud)

这是使用现代语法的一个很好的理由.它并不关心参数的类型.它将str在对象上使用并相应地输出它.

print "The number is {:,d} and John has {} sisters and {} brothers".format(1000000, 2, 3)
Run Code Online (Sandbox Code Playgroud)