Java BigDecimal

Java BigDecimal
Bruken av flytende punktdataformater i økonomiske beregninger er begrenset på grunn av deres unøyaktighet. Det er grunnen til at Java har en spesiell klasse som heter BigDecimal for å redusere disse problemene. Bigdecimal er av 32-bits heltall for å håndtere flytende punkttall som inneholder store doble verdier og ekstremt små med bemerkelsesverdig presisjon. Bigdecimal -klassen tilbyr metoder for manipulering, formatkonvertering, hashing, avrunding, sammenligning og aritmetikk. Noen klassemetoder for BigDecimal implementeres nedenfor.

Eksempel 1:

BigDecimal er effektiv i å representere antall nesten uendelig størrelse. Bigdecimal har de større flytende verdiene, mens BigInteger tar de store tallverdiene. Programmet er implementert nedenfor for å vise funksjonaliteten til BigDecimal i Java.

Vi har først inkludert "BigDecimal" og "BigInteger" -pakker i Java -programmet. Deretter erklærte vi gjenstanden for BigInteger som "VAL1" og BigDecimal -objektet som "Val2". Vi har tildelt den lange heltallverdien til objektet “VAL1” i BigInteger () -klassen og den flytende punktverdien til “Val2” -objektet til BigDecimal () -klassen. Etter det trykket vi begge verdiene for å oppnå resultatene.

Resultatene fra verdiene BigInteger og BigDecimal utføres som følger:

Eksempel 2:

BigDecimal tillater bare vilkår. La oss ha et Java -program der de aritmetiske operasjonene utføres på to viktige store desimal heltall.

Vi har definert to BigDecimal -objekter som er merket “NUM1” og “NUM2”. Disse bigdecimale objektene initialiseres med store desimalverdier. Deretter brukte vi tilleggs-, subtraksjons- og multiplikasjonsoperasjonen på disse objektene ved å bruke henholdsvis add (), trekke () og multiplisere (). Legg merke til at det første objektet “num1” av BigDecimal kalte metoden og det andre objektet “num2” passerte som et argument for den metoden.

Følgende resultater oppnås ved å anvende metodene ovenfor på stordesimale verdier.

Eksempel 3:

Sammenligningsoperasjonen kan ikke utføres på BigDecimal -verdier ved bruk av sammenligningsoperatørene. Som, bigdecimal er begrenset til int, lange og doble datatyper. Java har en innebygd sammenligning () -metode for å sammenligne BigDecimal-verdier.

Vi har et BigDecimal -objekt “BIG1” og “BIG2” -deklarasjon innenfor hovedmetoden () i den spesifiserte Java -klassen. Etter å ha erklært objektene, setter vi desimalverdiene i dem. Deretter brukte vi den nestede "IF-Else" -blokken for å sammenligne BigDecimal-objektet ved hjelp av Compareto () -metoden. Hvis begge BigDecimal -objektet er like, blir nullet returnert og utskriftserklæringen til "IF" -delen blir utført. Ellers returnerer sammenlignet () metoden verdien “1” når BigDecimal inneholder forskjellige verdier. Vi sjekket returresultatene fra sammenligningsmetoden () for desimalverdiene gitt i BigDecimal () -klassen via nestet IF-Else-uttalelse.

Sammenligningsverdien () metodeverdien er lik verdien “1” som viser at flytall. Utskriftsmeldingen “Else-IF” vises nedenfor.

Eksempel 4:

Java har en annen innebygd bytevalueExact BigDecimal for konvertering av BigDecimal til en byte mens du søker etter tapte data. Denne metoden kaster en aritmeticexception når bigdecimal har en brøkdel som ikke er null, eller hvis resultatet er utenfor området som kan lagres med en byte.

Vi har brukt BytevalueExact () -metoden i programmet ovenfor. For dette har vi erklært variabelen “BigDec” av BigDecimal. Deretter definerte vi en variabel "b" av typen byte. Vi har satt verdien i BigDecimal () -klassen som er initialisert i "BigDec" -variabelen. Deretter påkalte vi bytevalueExact () i variabelen “B” for å få byteverdien av stordesimal verdi. Byteverdien som returneres fra denne metoden vil bli skrevet ut ved hjelp av Java -utskriftsmetoden.

Byteverdien fra bytevalueExact () -metoden er den samme som inngangen BigDecimal -verdien fordi antallet ikke inneholder noe desimalpunkt.

Eksempel 5:

Maksimums- og minimumsverdiene fra de spesifiserte BigDecimal -verdiene kan oppnås ved bruk av Max () og Min () -metodene, da disse metodene er kompatible med BigDecimal -klassen.

Vi har generert tre bigdecimale objekter som "B1", "B2" og "B3" for å få minimumsverdien og maksimumsverdiene fra disse. Sammen med disse objektenes erklæringer har vi også opprettet ytterligere to objekter "MaxVal1" og "MaxVal2". Først passerte vi de store Decimal -tallene til hvert av objektene. Innenfor “MaxVal1” kalles objektet “B1” Max () -metoden som tar “B2” -objektet som en parameter. På samme måte har vi satt “MaxValue2”, men distribuert “Min ()” -metoden for å finne minimumsverdiene mellom “B1” og “B3”. MAX () -metoden viste den største bigdecimale verdien og min () -metoden viste den minste BigDecimal -verdien.

BigDecimal -verdien til “B2” inneholder maksimal verdi sammenlignet med “B1” som Max () -metoden gir nedenfor. Det samme er tilfellet for Min () -metoden som viser stordesimal verdi “B3” fordi den har en minimumsverdi på “B1”.

Eksempel 6:

POW () -metoden til BigDecimal brukes for å få strømverdien til den medfølgende BigDecimal -verdien. En stordecimal med verdien (dette n) returneres fra POW () -metoden.

Vi har spesifisert BigDecimal -objektene “BD1” og “BD2”. I objektet “BD1” har vi tildelt verdien av BigDecimal som inneholder desimalpunktet. Deretter brukte vi POW () -metoden på objektet “BD1” i objektet “BD2”. POW () -metoden er satt med verdien “3” som returnerer kraften til “3” for stordesimal verdi.

Bigdecimal -verdien som er hevet til kraften “3” har følgende verdi:

Eksempel 7:

Den siste BigDecimal -metoden implementert nedenfor kalles skala (). Det brukes til å få skalaverdien til den medfølgende BigDecimal. Skalaen til en null eller positiv verdi bestemmes av antall sifre som er plassert til høyre for desimalpunktet. Når en verdi er negativ, multipliseres det uskalmede tallet med verdien av verdien “10” negasjon av skalalens negasjon.

Vi har gitt en positiv floatverdi til BigDecimal som er initialisert i variabelen “Deci1”. På den annen side har vi satt den negative float -verdien til stordesimalen i “Deci2” -objektet. Deretter har vi kalt “skala ()” -metoden for Deci1 og Deci2 -objektet innenfor de nylig erklærte variablene “S1” og “S2” for å få omfanget av disse bigdecimalene.

Desimalverdien på høyre side av positiv bigdecimal er “1”, så skalaen er også “1”. Omfanget av den negative BigDecimal er “3”.

Konklusjon

Java Bigdecimal er en metode for å representere nummeret nøyaktig. De få metodene knyttet til BigDecimal blir utforsket i dette dokumentet. BigDecimal ville forhindre den forskjellige skalaen av dobbeltverdien når du håndterer den mindre dobbelt kan fjernes fra summen på grunn av variasjon i skalaen. Dette er en fordel med BigDecimal -klassen, men ulempen med BigDecimal er at det gjør det mer komplisert å lage algoritmer.