我有一个生成一些数字的脚本(特别是以纪元形式出现的次数)。
每次生成一个数字时,我都会将数字附加到一个数组(称为VALUES)并打印数组和该数字。但是,该数字不包含小数点后与数组中的数字一样多的位数。
例如,示例输出将如下所示(经过3次迭代):
VALUES = [733948.45278935181, 733948.45280092594, 733948.45280092594]
Number = 733948.452801
数组中的第三个数字对应于Number中的值。
为什么它们在小数点后包含不同数量的位置?
偏离主题:小数点后的数字是多少?我以为他们有一些数学术语我只是不记得它是什么。
注意:代码是在python中。
答案 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的同义词。