在Python中打印数字
我有一个脚本,它会生成一些数字(具体来说是以时间戳的形式)。
每次生成一个数字,我都会把这个数字加到一个叫做 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内部会根据使用的不同方法来决定显示的方式,主要是repr
和str
这两个方法。repr
会显示更多的小数位,而str
则显示得少一些。
当你使用print
时,它实际上是调用了str
方法,所以如果你写print Number
,它会稍微减少小数位数。不过,当你打印一个数字列表,比如print VALUES
时,Python内部会使用repr
,这就会显示出更多的小数位。
总的来说,根据你打印的方式不同,你可能会看到不同的小数位数。但是内部的数字其实是一样的。
如果你想强制显示特定的小数位数,可以这样做:
print "%.3f" % 3.1415 # prints 3.142