Java dzialania na bardzo duzych liczbach.

0

witam. Dostalem zadanie w ktorym musze wykonac dzialania typu +-*\ bardzo duzych liczb ktore nie mieszcza sie w long float etc. Piszac bardzo duze liczby na mysli mam np 1005 milionow *369 bez uzycia bigint i big dec. Doszedłem do wniosku zeby podzielic ta liczbe na mniejsze party i na nich wykonywac dzielenie rzw splitt. Kolejne ale, jak to bedzie wygladalo w przypadku mnozenia idzielenia. Wtedy wpadlem na 2 pomysl zeby wykorzystac tablice. Zapisac lazda cyferke oddzielnie i tak wykonywacdzialanie. Prosze tylko o pomoc w rozkmince, za bledy przepraszam pisze uzywajac telefonu, z gory dziekuje i szzesliwego nowego roku!

0

Zależy czy potrzebna ci jest precyzja. Jeśli chciałeś używać floata to raczej nie. W takim razie możesz stworzyć własnego floata, np jeden long na wyznacznik + jeden long na mantysę. W takim przypadku możesz przechowywać dużo większy zakres liczb, a ich mnożenie i dzielenie jest dużo łatwiejsze.

0

hmm, analizuje to wlasnie. A mozesz mi powiedziec czy zadziala to w przypadku np. trylion 123tys 263 * 1487614290124

0

W takim schemacie precyzja jest skończona, więc ten trylion coś tam zostanie przycięty i zostanie z niego trylion (bez czegoś tam).

Napisz dokładnie o co Ci chodzi: czy masz obsługiwać floaty (tzn notacja wykładnicza, mała liczba <20 liczb znaczących), czy też może masz operować na liczbach całkowitych i zachowywać wszystkie cyfry wyniku?

0

Napisz klasę realizującą obliczenia na wielkich liczbach. Liczby przechowywane są jako łańcuchy znaków o dowolnej długości. Projekt będę różnie punktować w zależności od tego ile elementów zostanie poprawnie napisanych, i klasa powinna zawierać funkcje umożliwiające dodawanie, odejmowanie, mnożenie, dzielenie – ale wszystkie liczby mogą być zarówno ujemne jak i dodatnie;

Co to jest duża liczba całkowita?

Dużą liczbą całkowitą nazywamy liczbę, która:

  1. nie mieści się w żadnym z zakresów typów domyślnie dostępnych w języku JAVA, czyli int, long, float czy double;
  2. pamiętane są wszystkie cyfry bez względu na pozycję i bez żadnych zaokrągleń.

Oznacza to, że jedynym typem zdolnym spełnić wszystkie te wymogi jest typ String lub char[] (czyli tablice znaków), a inaczej mówiąc tablica znaków, gdzie każdy znak reprezentuje konkretną cyfrę w naszej liczbie, a ww. operacje będą sprowadzały się do zaimplementowania znanych nam ze szkoły podstawowej operacji dodawania, mnożenia, odejmowania i dzielenia pisemnego (pod kreską, czy jak kto woli) na ciągach znaków. Po zaimplementowaniu poniższej funkcja main powinna zadziałać poprawnie i podać wyniki jak poprawnie.

0

lol, tak jakbym pamietal skads to zadanie- jaka uczelnia?

0

Warszawska :)

0

W javie jest klasa do obslugi duzych lcizb, nazywa sie o ile pamietam chyba BigDecimal, na mojej stronce znajdziesz klase ONP ktora korzysta z zmodyfikowanej wersji..

0

"bezz uzycia bigint i big dec."

0

@orlando, a weź sobie pociągnij źródła Javy ze strony Suna. Popatrz jak BigDecimal realizuje interesujące się funkcjonalności i napisz to mniej mądrze.

0

czy ktoś mógłby ten problem rozwinąć? jak działać z takimi stringami?

0

Tak jak w podstawówce wykonując obliczenia pisemnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1