Java klase BigDe­ci­mal ļauj precīzi apstrādāt sa­rež­ģī­tus peldošā punkta skaitļus. Pēc to iz­vei­do­ša­nas varat piemērot dažādas metodes. Sintakses struktūra vienmēr ir vienāda, tāpēc ir viegli ātri ie­pa­zī­ties ar šo klasi.

Kas ir Java BigDe­ci­mal?

Java BigDe­ci­mal ļauj precīzi attēlot un apstrādāt sa­rež­ģī­tus peldošā punkta skaitļus, kas teo­rē­tis­ki var būt jebkura izmēra. Šajā rakstā tiks parādītas dažādas metodes šīs klases iz­man­to­ša­nai, piemēram, no­apa­ļo­ša­nai, arit­mē­ti­kai vai formāta kon­ver­tē­ša­nai. Jūs arī uz­zi­nā­siet, kā to īstenot hašēšanai un precīziem, sa­rež­ģī­tiem sa­lī­dzi­nā­ju­miem.

Java BigDe­ci­mal sastāv no 32 bitu vesela skaitļa mēroga un ne­mē­ro­ge­ta vesela skaitļa vērtības ar izvēles pre­ci­zi­tā­ti. Šajā gadījumā “mērogs” nozīmē ciparu skaitu aiz de­ci­māl­zī­mes, ja tie ir lielāki vai vienādi ar nulli. Tomēr, ja vērtība ir mazāka par nulli, tā tiek reizināta ar 10^(-mērogs). Klases lielumu ierobežo tikai datora atmiņa. Tomēr tas ir drīzāk teo­rē­tisks apsvērums, jo ir maz ticams, ka programma radīs skaitli, kas pārsniedz tās pieejamo atmiņu. BigDe­ci­mal Java ir paredzēts tikai peldošā punkta skaitļiem, bet Bi­gIn­te­ger klase tiek izmantota veselo skaitļu apstrādei.

Kādam nolūkam ir ne­pie­cie­ša­ma šī nodarbība?

Java BigDe­ci­mal pre­ci­zi­tā­tes līmenis nav ne­pie­cie­šams visos sce­nā­ri­jos. Taču ir si­tuā­ci­jas, kad tā pre­ci­zi­tā­te ir ne­no­vēr­tē­ja­ma. Piemēram, tā labi pilda savu uzdevumu e-ko­mer­ci­jas darījumos, kur aprēķinus var ietekmēt pat mazākā de­ci­māl­da­ļa. Šo klasi izmanto arī precīzu statisko analīžu veikšanai. Prog­ram­mas, ko izmanto lidmašīnu vai raķešu vadībai un na­vi­gā­ci­jai, paļaujas uz šo klasi, tāpat kā medicīnas nozare. Citās jomās Java BigDe­ci­mal piedāvātā pre­ci­zi­tā­te nodrošina vislabāko iespējamo drošību.

Kā tiek radīts objekts?

Lai izmantotu BigDe­ci­mal Java, vispirms ir jāimportē klase savā Java programmā. Pēc tam var deklarēt šīs klases objektu. Tad iz­vei­do­jiet vēlamo vērtību kā argumentu un nododiet to at­bil­sto­ša­jam Java kons­truk­to­ram. Pēc šī procesa pa­beig­ša­nas varat izmantot BigDe­ci­mals Java. Klasē at­ra­dī­siet dažādas metodes, kuras sīkāk iz­skaid­ro­sim nākamajā sadaļā. Vispirms im­por­tē­sim klasi un dek­la­rē­sim divus BigDe­ci­mal objektus:

/ / Your Java program for the BigDecimal class
import java.math.BigDecimal;
public class BigDecimalExample
{
	public static void main(String[] args)
	{
		/ / Create two new BigDecimals
		BigDecimal ExampleOne =
			new BigDecimal ("1275936001.744297361");
		BigDecimal ExampleTwo =
			new BigDecimal ("4746691047.132719503");
	}
}
java

Tagad jūs varat izmantot šos objektus ar BigDe­ci­mal klases metodēm.

Java BigDe­ci­mal piemēri

Kad esat iz­vei­do­jis objektus, varat izmantot dažādas metodes, lai izmantotu objektus un veiktu darbības. Ap­ska­tī­sim dažus piemērus, lai parādītu, kā tas darbojas. Izvade tiek uzsākta, iz­man­to­jot Java komandu System.out.println().

Divu BigDe­ci­mal pie­vie­no­ša­na

Ja vēlaties Java pievienot divus BigDe­ci­mals, jums ir jāizmanto add() metode. Lai to izdarītu, sa­gla­bā­jiet divas vērtības, kuru summu vēlaties aprēķināt. Mūsu piemērā vērtība ExampleOne tiks pie­vie­no­ta vērtībai ExampleTwo.

ExampleOne =
ExampleOne.add(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);
java

Atņemt skaitļus

Lai atņemtu divas vērtības viena no otras, ir ne­pie­cie­ša­ma subtract() metode. Nākamajā piemērā mēs atņemam ExampleTwo no ExampleOne.

ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);
java

Reizināt vērtības

Metode, ko iz­man­to­jat, lai reizinātu divus BigDe­ci­mals Java, darbojas līdzīgi. Tā saucas multiply(). Lai reizinātu ExampleTwo ar ExampleOne, iz­man­to­jiet šādu kodu:

ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);
java

Skaitļu dalīšana

Ja vēlaties sadalīt divus BigDe­ci­mal objektus Java, iz­man­to­jiet metodi divide(). Tā atbilst tādam pašam sintaksim kā citi piemēri un izskatās šādi:

ExampleOne =
ExampleOne.divide(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);
java

Tomēr tas darbojas tikai tad, ja rezultāts ir precīzs vai vesels skaitlis. Ja tas tā nav, tiks parādīts šāds kļūdas ziņojums: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Tas apraksta izpildes laika kļūdu. Lai to iz­vai­rī­tos, ir pieejamas dažādas no­apa­ļo­ša­nas opcijas metodei divide(), kuras var pārraidīt, iz­man­to­jot java.math.Roun­dingMo­de. Jūs varat iz­vē­lē­ties no šādām kon­stan­tēm:

Konstante Funkcija
GRIEZUMI Noapaļo līdz pozitīvai bez­ga­lī­bai
DOWN Noapaļo līdz 0
GRĪDA Noapaļo līdz negatīvai bez­ga­lī­bai
HALF_DOWN Noapaļo līdz tuvākajam skaitlim un pretējam 0, ja abi ir vienādi at­tā­li­nā­ti
HALF_EVEN Noapaļo līdz nākamajam blakus skaitlim un nākamajam pāra skaitlim, ja abi ir vienā attālumā
HALF_UP Noapaļo līdz tuvākajam skaitlim un virzienā uz 0, ja abi ir vienā attālumā
UN­NE­CES­SARY Izlaiž no­apa­ļo­ša­nu un veic tikai precīzas darbības; var izmantot tikai tad, ja dalīšana ir precīza
UP Noapaļo prom no 0

Pārskats par sva­rī­gā­ka­jām metodēm

Tagad, kad esat ie­mā­cī­jies, kā lietot BigDe­ci­mal Java, šeit ir pārskats par dažām no sva­rī­gā­ka­jām metodēm, ko varat izmantot kopā ar to.

Metode Funkcija
abs() Atgriež BigDe­ci­mal ar tā absolūto vērtību
add() Atgriež BigDe­ci­mal, kura vērtība sastāv no (tas + sum­mē­ja­mais)
divide() Izvada vērtību, kas iegūta no (this / Divisor)
max(BigDe­ci­mal val) Izvada BigDe­ci­mal maksimālo vērtību
min(BigDe­ci­mal val) Izvada BigDe­ci­mal minimālo vērtību
mo­ve­PointLeft(int n) Izvada BigDe­ci­mal, kur de­ci­mā­lais punkts ir pār­vie­tots pa kreisi par vērtību ‘n’
mo­ve­Poin­tRight(int n) Izvada BigDe­ci­mal, kur de­ci­mā­lais punkts ir pār­vie­tots pa labi par vērtību ‘n’
multiply(BigDe­ci­mal mul­tip­li­cand, MathCon­text mc) Atgriež vērtību, kas ir rezultāts no (this * mul­tip­li­cand)

7a13b71b544a0a47b82b89c94cb2cba2

a043a1b67eddde60f587280a4ca1a324

bc7ff3cc8bd2c8e909d817f10f496251

388d113eebff89cedf1ec961d226da55

b42f63c25117881a858a10be77530172

Go to Main Menu