在Python中打印数字

13 投票
4 回答
45808 浏览
提问于 2025-04-16 01:15

我有一个脚本,它会生成一些数字(具体来说是以时间戳的形式)。

每次生成一个数字,我都会把这个数字加到一个叫做 VALUES 的数组里,并且同时打印出这个数组和刚生成的数字。不过,生成的数字在小数点后面的位数比数组里的数字少。

比如,经过三次生成,输出可能是这样的:

VALUES = [733948.45278935181, 733948.45280092594, 733948.45280092594]
Number = 733948.452801

数组里的第三个数字和刚生成的数字是对应的。

为什么它们在小数点后面的位数不一样呢?

题外话:小数点后面的数字叫什么?我记得有个数学术语,但就是想不起来了。

注意:代码是用 Python 写的。

4 个回答

1

为了达到你想要的精度,你需要像下面这样做:

VALUES = [733948.45278935181, 733948.45280092594, 733948.45280092594]
for v in VALUES:
    print '%18.11f' % (v)

而我一直用来形容小数点后面的那些数字的词就是“那些小数点后面的数字”。:-)

4

当你打印一个列表的时候,它会对列表中的每一个元素使用repr(x)这个方法来显示。

而当你打印一个数字的时候,它会使用str(x)这个方法来显示。

举个例子:

>>> print 123456789.987654321
123456789.988

>>> print [123456789.987654321]
[123456789.98765433]

>>> print str(123456789.987654321)
123456789.988

>>> print repr(123456789.987654321)
123456789.98765433
11

在Python中,当你打印一个数字时,有时候它会显示出不同的小数位数。这是因为Python内部会根据使用的不同方法来决定显示的方式,主要是reprstr这两个方法。repr会显示更多的小数位,而str则显示得少一些。

当你使用print时,它实际上是调用了str方法,所以如果你写print Number,它会稍微减少小数位数。不过,当你打印一个数字列表,比如print VALUES时,Python内部会使用repr,这就会显示出更多的小数位。

总的来说,根据你打印的方式不同,你可能会看到不同的小数位数。但是内部的数字其实是一样的

如果你想强制显示特定的小数位数,可以这样做:

print "%.3f" % 3.1415   # prints 3.142

撰写回答