Python:溢出错误long int太大而无法转换为float

时间:2015-04-25 13:38:46

标签: python math pow

我必须计算2到8635的功率。当我计算2 ^ 8635时,我遇到了这个错误。任何建议如何在python中解决这个问题。使用十进制模块也没有帮助。

math.exp(2**8635)
Traceback (most recent call last):
  File "<pyshell#50>", line 1, in <module>
    long(math.exp(2**8635))
OverflowError: long int too large to convert to float

1 个答案:

答案 0 :(得分:6)

您可以使用mpmath任意精度数学模块计算exp(2**8635)

>>> from mpmath import mp
>>> mp.exp(2**mp.mpf(8635))

结果相当大,即使是科学记数法,所以我对它进行了一些字符串处理,通过copy&amp;将指数粘贴到字符串s中,然后使用:

重新格式化
>>> ' '.join([''.join(b) for b in zip(*[iter(s)]*10)])

结果,使用mp.dps=20的精度是

  

4.2745087809955028863988E + 1075961842 0748495519 2355783856 9202899773   5836295555 7242537851 6693465178 9188332936 7912863215 8269919370   9351573282 2091597135 7873818954 8423038425 5471700446 0909815025   4915349824 6380686906 6065142412 7999166978 5222679350 6349971415   2079241766 6069616716 5214806906 8965805654 9049342395 4257087497   9202056938 3115899033 9617474292 7677302965 5753590474 3880492978   3310677063 3380119492 7251778893 3532333942 0392908196 6724211094   8421111629 7159351144 1795137181 2264799291 0856206603 1305457648   0092179442 8275386674 9796135348 4212345607 2596906933 7416259320   1466097812 2578572779 3349115312 8876785712 0147507083 6261226991   0422767260 2197316370 2566751899 4709067324 2810166509 7120800169   7485704027 5902848998 8322436088 0980908767 3758921061 0035161163   7079806523 1330002249 6901129466 0981598858 6254175013 7068344219   8144416569 4188190080 3725722501 2061326523 2288670566 9409102206   8066363145 9074202764 8831634730 7112255017 0796958442 3491574250   3284769002 8003076564 8628481483 0439060173 9895022099 1254178687   3665797407 1814255571 0142720172 8605229862 9458410467 4672777325   9445377886 5938198959 1752282268 4759702578 8305033658 4673474227   0701134707 7350267519 5446056950 6855231007 2274227123 3745529068   2622945712 5542911110 4405852782 0415855498 0153628764 5474618275   7401652756 8947182158 7839446628 2805776521 9227970761 2076840252   6317298197 2928759787 3166056075 4718446805 4085909927 3696546013   4104199677 6666307004 0490874208 2916409726 3519895965 9647475416   4225305349 6334839659 5665063673 3375427908 5570705561 0968733246   7656866381 6185956211 6475910345 4507247539 2187977091 2735607271   0209770526 5707982249 7378999875 8729821041 8908550791 3750558609   2896112135 9430559215 0044675914 5643599469 1254786634 5242493728   3502270440 3874100770 4799209491 3826434565 6967844371 7035989909   7698785578 9911981690 6907193705 6149599295 7385801544 7008446783   4130808551 5517628873 4403074667 6152264003 5246435484 0092524145   7903102870 5636975728 9853241717 1112914752 3204974235 3214176498   6118461362 7598845054 2855525271 2496489615 8680550278 4583386686   7070831392 2705583569 2224816732 3325036729 8106736491 3995562245   2081730125 0118717575 0946706166 8838482200 0110510511 5193674369   7359353196 7070446633 3514990982 6428484539 3692837968 6448096531   0406301917 5207050949 5578924420 0588400753 2802517808 1953501443   3445927237 8496133188 6299359291 6240744112 8041383838 2523556917   1966060664 8100342007 9597089073 1150067540 7733669287 2770028938   5557716323 9545436149 8913712891 0452403558 6380308865 8375826610   3861873050 5349593724 7443661231 6344789431 9248320333 3901279921   2985101147 6464375714 1302826973 5468251818 0411981792 4830271478   1578285904 7739571097 8513979667 0471302144 9500998430 2500602635   1255157768 2597448484 2711867118 3605984621 3175011866 9369283240   7857863664 6903750271 5353454119 0302118673