没有科学记数法的Python计算

时间:2018-04-06 04:52:38

标签: python math long-integer scientific-notation

我曾尝试使用python处理一些难以手动计算的大数字。假设我将256的幂作为一个长整数作为起点。然后,当我想要用除以2做任何事情时,python给我的价值就像这个5.78960446186581e+76一样的科学记数法。

但是,我需要非常精确的数字,一切都有所不同。当我在进行计算时,如何摆脱这种科学记数法呢?

2 个答案:

答案 0 :(得分:1)

你应该在Python 3中使用整数除法,e。 G:

a = 2 ** 256
print(a / 2)
print(a // 2)

这将打印

5.78960446186581e+76
57896044618658097711785492504343953926634992332820282019728792003956564819968

答案 1 :(得分:1)

您可以使用标准库中的decimal模块:

import decimal

if __name__ == '__main__':
    decimal.getcontext().prec = 100
    a = decimal.Decimal(1) / decimal.Decimal(7)
    b = decimal.Decimal(str(a * decimal.Decimal(str(1e100))))
    print(a)
    print(b)

输出:

0.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571429 1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571429