如何展开一个长数字(以e + ##结尾)以展开形式显示?

时间:2014-05-31 13:09:16

标签: python numbers variable-length

所以,这可能是一个简单的问题,但我在任何地方都找不到答案。

举个例子,我有一个简单的程序,我想像这样划分一个b:

def main():
    a = 12345678900000000
    b = 1.25

    answer = (a / b)
    print(answer)
main()

此特定示例将导致9.87654312e + 15。我如何让Python忽略简化我的数字并给我整数?

先谢谢,对不起,如果它真的很基本,我也不会问我是否可以通过Google找到它。

2 个答案:

答案 0 :(得分:3)

您正在看到工作时浮点数的默认str()转换。您可以通过明确格式化数字来选择不同的转化。

format() function可以为您完成此操作:

>>> n = 9.87654312e+15
>>> format(n, 'f')
'9876543120000000.000000'

有关更多选项,请参阅Format Specification Mini-Language文档。 'f'格式只是其中之一:

  

定点。将数字显示为定点数。默认精度为6.

小数点后的.000000六位数的默认精度;您可以使用.<precision>f改为:

>>> format(n, '.1f')
'9876543120000000.0'

但考虑到小数是四舍五入的,以符合要求的精度。

g格式在使用指数(e)和f表示法之间切换,具体取决于数字的大小,但如果数字是整数,则不包括小数;您可以使用{em>大精度与'g'一起使用,以避免完全打印小数:

>>> format(n, '.53g')
'9876543120000000'

要明确指出,str(n)format(n, '.12g')相同,repr(n)format(n, '.17g');当指数大于精度时,两者都可以使用指数格式。

答案 1 :(得分:1)

更具体的浮点格式

>>> print answer
9.87654312e+15
>>> print "%.20f" % answer
9876543120000000.00000000000000000000