Python 没有科学记数法的计算
Python calculations without scientific notation
我尝试使用 python 来处理一些难以手动计算的大数字。假设我有 2 的 256 次幂作为一个长整数作为起点。然后,当我想用它做任何事情时,比如除以 2,python 会给我这样的科学记数法 5.78960446186581e+76
的值。
但是,我需要非常精确的数字,一切都会有所不同。我在计算的时候怎么去掉这个科学记数法?
你应该使用Python3中的整数除法,e。 g.:
a = 2 ** 256
print(a / 2)
print(a // 2)
这将打印
5.78960446186581e+76
57896044618658097711785492504343953926634992332820282019728792003956564819968
您可以使用标准库中的 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
我尝试使用 python 来处理一些难以手动计算的大数字。假设我有 2 的 256 次幂作为一个长整数作为起点。然后,当我想用它做任何事情时,比如除以 2,python 会给我这样的科学记数法 5.78960446186581e+76
的值。
但是,我需要非常精确的数字,一切都会有所不同。我在计算的时候怎么去掉这个科学记数法?
你应该使用Python3中的整数除法,e。 g.:
a = 2 ** 256
print(a / 2)
print(a // 2)
这将打印
5.78960446186581e+76
57896044618658097711785492504343953926634992332820282019728792003956564819968
您可以使用标准库中的 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