如何将以e+##结尾的长数字展开显示?
这可能是个简单的问题,但我在任何地方都找不到答案。
举个例子,我有一个简单的程序,我想把a除以b,像这样:
def main():
a = 12345678900000000
b = 1.25
answer = (a / b)
print(answer)
main()
这个例子会得到9.87654312e+15这样的结果。请问我怎么才能让Python不简化我的数字,而是直接给我一个整数呢?
提前谢谢你,如果这个问题太基础了,我很抱歉。如果我能在谷歌上找到答案,我就不会问了。
2 个回答
1
只需要更具体地说明一下浮点数格式就可以了。
>>> print answer
9.87654312e+15
>>> print "%.20f" % answer
9876543120000000.00000000000000000000
6
你看到的是浮点数的默认 str()
转换效果。你可以通过明确格式化数字来选择不同的转换方式。
format()
函数 可以帮你做到这一点:
>>> n = 9.87654312e+15
>>> format(n, 'f')
'9876543120000000.000000'
想了解更多选项,可以查看 格式规范小语言 的文档。'f'
格式只是其中的一种:
固定点数。将数字显示为固定小数点数。默认精度是6。
默认的精度会导致小数点后有 .000000
六位数字;你可以通过使用 .<精度>f
来改变这个精度:
>>> format(n, '.1f')
'9876543120000000.0'
但要注意,小数会被四舍五入以适应请求的精度。
g
格式会根据数字的大小在使用指数形式(e
)和 f
形式之间切换,如果数字是整数,它不会显示小数;你可以使用非常大的精度与 'g'
来完全避免打印小数:
>>> format(n, '.53g')
'9876543120000000'
具体来说,str(n)
和 format(n, '.12g')
是一样的,repr(n)
则是 format(n, '.17g')
;当指数大于精度时,两者都可以使用指数格式。