Java - 用疯狂的大数进行计算

问题描述 投票:0回答:4

如何在 Java 中计算非常大的数字。当我说疯狂时,我的意思是 8192 位整数和浮点数。

这可能吗?普通 64 位计算机最多可以计算多少?

java largenumber
4个回答
10
投票

当我说疯狂时,我的意思是 8192 位整数和浮点数。

这真的没那么疯狂。这不会对你的机器或其他东西的内存造成负担。

使用

BigInteger
表示整数,使用
BigDecimal
表示浮点值。我不相信有“大二进制浮点数”的类型。

作为您正在查看的数字类型的示例:

import java.math.BigInteger;

class Test {
   public static void main(String[] args) {
       byte[] bytes = new byte[8192/8];
       bytes[0] = 127;
       System.out.println(new BigInteger(bytes));
   }
}

输出:

541113332904944621257027340160900091917693549115318562261104546273807066972024025361193585096486923349385062726999774256 58184997719727490655700949283144320110555117169124417840391971798422703927844335998018022676167980308949759460599767148572476 39071455989534064319901734425004265756642627879491125833862537051316681047867501824127916808559448657152596964101883678866120 37506345419830856183841501926493918229094077315951142102521296377217539380498798690167426476561663037383738887233213887519273 21172557988067480038760056847073727010445791299875287507853044687168652624941082267714690008618088081324751826672452898261503 29977739014138768482963391844836531665552791063718683969010818615390959114714426100639512938791203658789484398914236504157050 34797749122786629924812156703812528640850454060722116295309871801737746764999201088806655284597015419746259510509499349561721 65470761098978965447143873516902070403076157363288582936119123155367720547246729825361787557623529251043248127240268490694913 71078469849966644059105847291931171759841601821994439289245617769025984063619202120499775694231222389366137201938359918010785 89862197148943845799227101449150630448578266698756989391702826257605172788293230378218508822387001316270205970944491970492276 55125407001194134418205771128291310716529622155372615790245637060139437172368576020035583469847393839794589975939712503621076 06804783064658306668974068404040244764931349988161431078966767435397693174066173646878617118009841424429485142152494549278204 36180492589816736874897449912514943129230209940739231794049768749574548833516764431351090987436249707697734825718908151379544 02965045618145294396945312216824907109329964085796206591446132593361261784885924393183384293704342791395096402723461499109924 32815460440578204299168803347699028492426927962346745608570354102315442793775881972733448472498426716766775378612363999824412 13013590542156075455205317955214656111885489459439151729409777140396834780673618790448115444670040022974650543938394323796233 64601515694789918394718340117344609424804197141122047189367685312845539817792260083729225576681854366661706869006795636449282 88677044149485456683642325960085930505886731377314818674108303137131284319179417106259398706462704070309301976457257942461949 84570796611923844444224132832526549988639036039442164277785045016465216623043972724482648160510104973400460750404533502159516 766838971279926484762092518157058058042524433149400681767325045143455597943916743044982093381632

1
投票

BigInteger
(对于整数)和
BigDecimal
(对于精确的浮点数)是您所需要的。它们仅受可用内存的限制。


1
投票

是的,这是可能的。利用

BigDecimal

例如:

BigDecimal decOne = new BigDecimal("334");
BigDecimal decTwo = new BigDecimal("33");

BigDecimal result = decOne.subtract(decTwo);

然后只需打印出来即可。


0
投票

我是一名学生,对 Java 很感兴趣,就像你也被困住了。所以,我和我的朋友和老师一起创建了一个名为 BIGLONG 的课程。

它是 100% 纯 java 编写的,这是我的社区 GitHub 链接(那里有更多信息,或者您可以通过 [email protected] 联系我以获得进一步帮助)

BigLong 类链接

© www.soinside.com 2019 - 2024. All rights reserved.