在python中打印数字

时间:2010-07-13 21:16:02

标签: python

我有一个生成一些数字的脚本(特别是以纪元形式出现的次数)。

每次生成一个数字时,我都会将数字附加到一个数组(称为VALUES)并打印数组和该数字。但是,该数字不包含小数点后与数组中的数字一样多的位数。

例如,示例输出将如下所示(经过3次迭代):

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

数组中的第三个数字对应于Number中的值。

为什么它们在小数点后包含不同数量的位置?

偏离主题:小数点后的数字是多少?我以为他们有一些数学术语我只是不记得它是什么。

注意:代码是在python中。

4 个答案:

答案 0 :(得分:10)

当python打印出一个数字时,它有时会根据内部方法是调用repr还是str(它们都将数字转换为字符串)打印出更多小数位。 repr将返回更多小数位,而str则不会。

print调用了str,所以当你执行print Number时,它会稍稍修剪一下。但是,当您执行print VALUES时将数字列表转换为字符串时,列表将在内部使用repr,从而为其提供更多小数位。

总之,根据打印方式,您会看到不同的小数位数。但是,在内部,它仍然是相同的数字

如果要强制它使用特定数量的小数位,可以执行以下操作:

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

答案 1 :(得分:4)

当您打印列表时,它会为列表中的每个x打印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

答案 2 :(得分:1)

要获得所需的精度,您需要以下内容:

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

我一直用于小数点后的那些数字的术语是“小数点后的那些数字”。 : - )

答案 3 :(得分:0)

小数点右边的数字部分(或更普遍的说是radix point)称为数字的fractional part(与整数部分)。对于十进制系统,可以将其称为小数部分。在二进制文件中,我已经看到一部分数字称为 fractional bits

作者有时会在引用数字的那部分时使用术语mantissa,但是我相信许多用法都认为用法是错误的,就像 mantissa 一样。我的经验-最常被用作significand的同义词。