Java Bigdecimal

Java Bigdecimal
Zastosowanie formatów danych zmiennoprzecinkowych w obliczeniach finansowych jest ograniczone ze względu na ich niedokładność. Właśnie dlatego Java ma specjalną klasę o nazwie Bigdecimal, aby zmniejszyć te problemy. Bigdecimal ma 32-bitowe liczby całkowite do obsługi liczby zmiennoprzecinkowych, które zawierają duże podwójne wartości i wyjątkowo małe z niezwykłą precyzją. Klasa Bigdecimal oferuje metody manipulacji, konwersji formatu, haszu, zaokrąglania, porównania i arytmetyki. Niektóre metody klasowe Bigdecimal są zaimplementowane poniżej.

Przykład 1:

Bigdecimal jest skuteczny w reprezentowaniu liczby niemal nieskończonej wielkości. Bigdecimal utrzymuje większe wartości pływające, podczas gdy bigInteger przyjmuje duże wartości liczbowe. Program jest zaimplementowany poniżej, aby pokazać funkcjonalność Bigdecimal w Javie.

Najpierw dołączyliśmy pakiety „Bigdecimal” i „Biginteger” w programie Java. Następnie zadeklarowaliśmy obiekt Bigintegera jako „Val1”, a obiekt bigdecimal jako „Val2”. Przypisaliśmy długą wartość liczb całkowitą do obiektu „Val1” klasy bigInteger () i wartości zmiennoprzecinkowej do obiektu „Val2” klasy BigDecimal (). Następnie wydrukowaliśmy obie wartości, aby osiągnąć wyniki.

Wyniki wartości BigInteger i Bigdecimal są wykonywane w następujący sposób:

Przykład 2:

Bigdecimal pozwala tylko na arbitralne liczby całkowite liczby liczb stałego punktu. Miejmy program Java, w którym operacje arytmetyczne są wykonywane na dwóch znaczących dużych liczbach dziesiętnych.

Zdefiniowaliśmy dwa obiekty bigDecimal, które są oznaczone „NUM1” i „NUM2”. Te duże obiekty są inicjowane z dużymi wartościami dziesiętnymi. Następnie zastosowaliśmy operację dodawania, odejmowania i mnożenia tych obiektów za pomocą odpowiednio metod add (), subtract () i mnożenia (). Zauważ, że pierwszy obiekt „NUM1” Bigdecimal nazwał metodę, a drugi obiekt „NUM2” przekazał jako argument tej metody.

Poniższe wyniki są osiągane poprzez zastosowanie powyższych metod do wartości bigDecimal.

Przykład 3:

Operacji porównawczej nie można wykonać na wartościach bigdecimal przy użyciu operatorów porównawczych. Ponieważ Bigdecimal jest ograniczona do INT, Długie i podwójne typy danych. Java ma wbudowaną metodę porównawczą () do porównywania wartości bigDecimal.

Mamy Deklaracja Bigdecimal „Big1” i „Big2” wewnątrz metody Main () określonej klasy Java. Po ogłoszeniu obiektów ustawiamy w nich wartości dziesiętne. Następnie użyliśmy zagnieżdżonego bloku „IF-Else” do porównania obiektu bigdecimal przy użyciu metody Compareto (). Jeśli oba obiekt Bigdecimal jest równy, wówczas zero jest zwracane, a instrukcja drukowania sekcji „IF” zostanie wykonana. W przeciwnym razie metoda Compareto () zwraca wartość „1”, gdy Bigdecimal zawiera różne wartości. Sprawdziliśmy wyniki powrotu z metody Compareto () dla wartości dziesiętnych podanych w klasie BigDecimal () za pośrednictwem zagnieżdżonej instrukcji IF-ELSE.

Wartość metody compareto () jest równa wartości „1”, która pokazuje, że liczby pływaków przekazywane w klasie bigDecimal () nie są równe. Komunikat wydruku „else-if” jest wyświetlany poniżej.

Przykład 4:

Java ma kolejny wbudowany bajtewalueExact Bigdecimal do konwersji bigDecimal na bajt podczas wyszukiwania utraconych danych. Ta metoda rzuca arytmeticexception, gdy Bigdecimal ma część ułamkową, która nie jest zerowa, lub jeśli wynik jest poza zasięgiem, który może być przechowywany przez bajt.

W powyższym programie wykorzystaliśmy metodę BYTeValueExact (). W tym celu zadeklarowaliśmy zmienną „bigdec” Bigdecimal. Następnie zdefiniowaliśmy zmienną „B” bajtu typu. Ustawiliśmy wartość w klasie bigDecimal (), która jest inicjowana w zmiennej „BigDec”. Następnie wywołaliśmy bajteValueExact () w zmiennej „b”, aby uzyskać wartość bajtów wartości bigDecimal. Wartość bajtów zwrócona z tej metody zostanie wydrukowana za pomocą metody drukowania Java.

Wartość bajtów z metody bajteValueExact () jest taka sama jak wartość bigDecimalna wejściowa, ponieważ liczba nie zawiera punktu dziesiętnego.

Przykład 5:

Maksymalne i minimalne wartości z określonych wartości Bigdecimal można osiągnąć za pomocą metod Max () i min (), ponieważ metody te są kompatybilne z klasą bigDecimal.

Wygenerowaliśmy trzy obiekty bigDecimal jako „B1”, „B2” i „B3”, aby uzyskać z nich minimalną wartość i maksymalne wartości. Wraz z deklaracją tych obiektów stworzyliśmy również dwa kolejne obiekty „Maxval1” i „Maxval2”. Najpierw przekazaliśmy liczby bigDecimal do każdego z obiektów. W ramach „Maxval1” obiekt „B1” nazywa się metodą max (), która przyjmuje obiekt „B2” jako parametr. W ten sam sposób ustawiliśmy metodę „MaxValue2”, ale wdrożyliśmy metodę „min ()”, aby znaleźć minimalne wartości wśród „B1” i „B3”. Metoda Max () wykazała największą wartość bigDecimal, a metoda min () wyświetlała najmniejszą wartość bigDecimal.

Bigdecimal Wartość „B2” zawiera maksymalną wartość w porównaniu z „B1”, którą metoda max () wyświetla poniżej. To samo dotyczy metody min (), która wyświetla wartość bigDecimal „B3”, ponieważ ma ona minimalną wartość „B1”.

Przykład 6:

Metoda Bigdecimal jest używana do uzyskania wartości mocy dostarczonej wartości bigDecimalnej. BigDecimal z wartością (to N) jest zwracany z metody pow ().

Określiliśmy obiekty Bigdecimal „BD1” i „BD2”. W obiekcie „BD1” przypisaliśmy wartość Bigdecimal, która zawiera punkt dziesiętny. Następnie zastosowaliśmy metodę Pow () na obiekcie „BD1” w obiekcie „BD2”. Metoda pow () jest ustawiona z wartością „3”, która zwraca moc „3” dla wartości bigDecimal.

Wartość bigdecimalna podniesiona do mocy „3” ma następującą wartość:

Przykład 7:

Ostatnia metoda bigDecimal zaimplementowana poniżej nazywa się Scale (). Służy do uzyskania wartości skali dostarczonej Bigdecimal. Skala wartości zerowej lub dodatniej zależy od liczby cyfr umieszczonych po prawej stronie punktu dziesiętnego. Gdy wartość jest ujemna, liczba nieskalowana jest mnożona przez moc wartości „10” negacja negacji skali.

Dostaliśmy dodatnią wartość zmiennoprzecinkową Bigdecimal, która jest inicjowana w zmiennej „decy1”. Z drugiej strony ustawiliśmy ujemną wartość pływaka Bigdecimal w obiekcie „decy2”. Następnie nazwaliśmy metodą „Scale ()” dla obiektu DECI1 i DECI2 w nowo zadeklarowanych zmiennych „S1” i „S2”, aby uzyskać skalę tych bigDecimals.

Wartość dziesiętna po prawej stronie dodatniej bigdecimal wynosi „1”, więc skala wynosi również „1”. Skala negatywnego bigDecimal to „3”.

Wniosek

Java Bigdecimal jest metodą precyzyjnego reprezentowania liczby. W tym dokumencie badano kilka metod związanych z BigDecimal. Bigdecimal zapobiegałby różnej skali podwójnej wartości w przypadku mniejszych podwójnych można usunąć z suma ze względu na zmienność skali. Jest to zaleta klasy bigdecimal, ale wadą bigdecimal jest to, że tworzenie algorytmów jest bardziej skomplikowane.