打印浮点数并指定零的数量

6 投票
6 回答
27707 浏览
提问于 2025-04-15 12:10

我知道怎么控制小数点后面的位数,但我想知道怎么专门控制零的个数。

比如说:

104.06250000 -> 104.0625   
119.00000 -> 119.0  
72.000000 -> 72.0 

6 个回答

4

我觉得最简单的方法就是用“round”函数。在你的情况下:

>>> round(104.06250000,4)
104.0625
9

你有没有想过用 decimal 模块呢?

根据文档的介绍:

“decimal 模块考虑了有效数字的概念,所以 1.30 + 1.20 的结果是 2.50。后面的零是保留的,用来表示这个数字的重要性。这种表示方式在处理钱的时候是很常见的。对于乘法,‘学校书本’的方法会使用所有的数字。例如,1.3 * 1.2 的结果是 1.56,而 1.30 * 1.20 的结果是 1.5600。”

normalize()这个函数可以去掉后面的零:

>>> from decimal import *
>>> d1 = Decimal("1.30")
>>> d2 = Decimal("1.20")
>>> d3
Decimal("1.5600")
>>> d3.normalize()
Decimal("1.56")
5

我觉得这个没有固定的格式可言——Python的格式是从C语言继承来的,而我很确定在C语言中没有你想要的格式。

现在,在Python 3中,你可以使用format这个特殊的函数,来进行你自己的格式化。要去掉最后的零在Python中非常简单:只需要使用strip方法:

a = 1.23040000
print str(a).rstrip('0')

如果你想在小数点后保留一个0,这也不是很难。

撰写回答