为什么 julia return 对一些大数不为零?

Why does julia return non-zero for some big numbers?

在 Julia shell 中,当我想计算一些大数时,它 returns 其中一些为零,其他为非零。


julia> 23^1023
-7505274568781129817

julia> 23^10233345345345345345345345
-524211381283076585

julia> 6^66
0

julia> 6^666567
0

julia> 6^666567467456456
0

为什么?据我所知,当一个数字大于它的可变容量的两倍时,它的值将为零。但不是这样的。

这是整数溢出,参见手册https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Overflow-behavior

您可以改用大整数(参见 https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Arbitrary-Precision-Arithmetic):

julia> big"23"^1023
11157740226766098642576916479985732502550079026659668602369253176154754608347999114910934288598509169938542322634035543168104589454551803554752143514808871856407739044413061564710593969809293170387198434732839849079475397354914324959462224192710277582733000707189017630945088977603741349278943158891431873760538457405883290110683119304669609980551503814930814431431975534991573062542027069568527398640080137783572573628744292934799926441803784257928864905102312768281505257318699158791253710647692433095043904635807704217468279561767861663146318198088623674770926880080210309989765622294999800807236464408766346103653985201759420509533876924909908750714069885590356229608446855366913940019430671619981625609206032799826735265432172679241233520172523125869020169711024904402773853129665351797759891642127264888666794316949688983939775549154259963104480736117124292892646814620494489503114758819943362183681467998652454547183948074914858274708971403049788805953569337415595467715850757595901742734059151188466480831121544684493340167911965220743922762612303000346811165975512651283076102510848811008182559770140939825724297406037953883140920313402683491853674438512331534910835550559414659803452756567465225399126516307745943694271055034096963098307296535723190502271598318692446343365508448643996409450204836382025575710687700606126899558525256788416497673251704346550625698638155949249669830567

等等