• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlanie dużych liczb

Object Storage Arubacloud
0 głosów
433 wizyt
pytanie zadane 8 września 2021 w Java przez Mateusz85 Początkujący (370 p.)
Witam,

Jak wyświetlić naprawdę dużą liczbę zmiennoprzecinkową w Javie?

2 odpowiedzi

0 głosów
odpowiedź 8 września 2021 przez Wiciorny Ekspert (269,590 p.)
Zależy jak dużych, najlepiej zrobić to z pomocą klasy-wrapera.
Np. dla liczb float, znajdz BigFloat klase

https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Number.html
0 głosów
odpowiedź 8 września 2021 przez SebbaGamess Użytkownik (690 p.)

Jeżeli chcesz przechowywać naprawdę duże liczby lub mieć możliwość liczenia na liczbach bez błędu (np. błąd 0.1 + 0.2 = 0.30000000000000004) to powinieneś użyć klasy BigDecimal.
Dokumentacja: Tutaj

Nowy obiekt tworzysz za pomocą funkcji valueOf (jeżeli liczba jest mała - long/double)

BigDecimal decimal = BigDecimal.valueOf(1234);

Albo za pomocą konstruktora, gdy jest na prawdę duża (podajesz ją jako String):

BigDecimal decimal = new BigDecimal("245.343546567457563452345");

BigDecimal powstał po to, by przechowywać duże liczby oraz posiada dużo metod, dzięki którym można te liczby wykorzystywać w obliczeniach. (plus(), substact(), multiply(), divide() itd.) Jednak trzeba pamiętać o tym, że jako klasa zajmuje więcej miejsca niż zwykła liczba.

komentarz 8 września 2021 przez Wiciorny Ekspert (269,590 p.)

zależy. czy koledze zależy na precyzji.
Bo Liczby dziesiętne są przybliżeniami, więc pełnej precyzji z BigDecimal się nie osiągnie podczas aproksymacji 

Da się to  obejść, ale trzeba założyć tzw MathContext.UNLIMITED - dla klasy 

komentarz 8 września 2021 przez SebbaGamess Użytkownik (690 p.)
Sam nie znam lepszej klasy w API Javy, która lepiej operuje na liczbach (chociaż też nie wiem wszystkiego). Są jakieś bardziej precyzyjne klasy?
komentarz 8 września 2021 przez Wiciorny Ekspert (269,590 p.)
tzn, zależy czy obliczeniowo czy długościowo.
BO dedykowane klasy Float/Double dla BigDouble i BigFloat, zawsze dla tych typów będa miały lepszą precyzje matematyczną .. tylko z ograniczeniem co do wielkości liczby.
Natomiast BigDecimal z uzyciem MathContext, jednak jest najlepszym rozwiązaniem.
komentarz 8 września 2021 przez SebbaGamess Użytkownik (690 p.)
Nie znalazłem nigdzie w API Javy klas BigDouble/BigFloat. Możesz mi wysłać link do ich dokumentacji?

Podobne pytania

0 głosów
0 odpowiedzi 133 wizyt
pytanie zadane 23 listopada 2020 w Nasze projekty przez overcq Pasjonat (21,650 p.)
0 głosów
1 odpowiedź 867 wizyt
pytanie zadane 21 listopada 2020 w C i C++ przez Hardwell Dyskutant (8,980 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 18 listopada 2020 w C i C++ przez Marak123 Stary wyjadacz (11,190 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...