[Excel] Wyliczanie dużych, dokładnych liczb

johny1614
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 27 paź 2009, o 17:36
Płeć: Mężczyzna
Lokalizacja: Zgierz
Podziękował: 1 raz

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: johny1614 »

Witam. Mam za zadanie wyliczyć kilka dużych liczb w excelu. \(\displaystyle{ 100!}\), oraz \(\displaystyle{ 666^{666}}\).
Excel w swoich obliczeniach może wybrać tylko 10 cyfr do ktorych przybliża. Wątpię, by dało się to zmienić do dowolnej liczby cyfr, bo wtedy to zadanie byłoby bardzo łatwe. Ma ktoś może pomysł na funkcję która dałaby radę wybrać kilka ostatnich cyfr z liczby i utworzyć z niej liczbę? Chodzi mi o coś typu:
\(\displaystyle{ 412098412304982999 \rightarrow 82999}\) Wtedy miałbym iskierkę nadziei na zrobienie tego. Wszelkie inne sugestie bardzo miło widziane.
Ostatnio zmieniony 9 mar 2017, o 18:27 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: Vardamir »

Nie musisz obliczać całej liczby, aby znać kilka ostatnich cyfr. Wystarczy po każdym kroku brać modulo z wyniku do następnych obliczeń.
Awatar użytkownika
Medea 2
Użytkownik
Użytkownik
Posty: 2491
Rejestracja: 30 lis 2014, o 11:03
Płeć: Kobieta
Podziękował: 23 razy
Pomógł: 479 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: Medea 2 »

Z tego co wiem, to w Excelu można pisać makra, nie myślałeś o tym?
norwimaj
Użytkownik
Użytkownik
Posty: 5101
Rejestracja: 11 mar 2011, o 16:31
Płeć: Mężczyzna
Lokalizacja: 52°16'37''N 20°52'45''E
Podziękował: 4 razy
Pomógł: 1001 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: norwimaj »

johny1614 pisze:Chodzi mi o coś typu:
\(\displaystyle{ 412098412304982999 -> 82999}\)
=MOD(412098412304982999,100000) ?
Medea 2 pisze:Z tego co wiem, to w Excelu można pisać makra, nie myślałeś o tym?
Nie zmienia to faktu, że zmienne mają ograniczone rozmiary. Integer jest \(\displaystyle{ 16}\)-bitowy, Long jest \(\displaystyle{ 32}\)-bitowy. Typ Decimal pozwala reprezentować trochę dłuższe liczby, ale nie aż tak.
pesel
Użytkownik
Użytkownik
Posty: 1707
Rejestracja: 8 cze 2010, o 13:09
Płeć: Mężczyzna
Podziękował: 1 raz
Pomógł: 412 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: pesel »

Kod: Zaznacz cały

http://www.tushar-mehta.com/misc_tutorials/project_euler/LargeNumberArithmetic.htm

Kod: Zaznacz cały

http://www.precisioncalc.com/xlprecision.html
johny1614
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 27 paź 2009, o 17:36
Płeć: Mężczyzna
Lokalizacja: Zgierz
Podziękował: 1 raz

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: johny1614 »

Robieniem makr jak najbardziej, ale pisania w vb raczej chce uniknąć.
Nie wpadłem na funkcję modulo. Niestety ona może się nie przydać, bo wylicza tylko dla pewnych wartości. Jak liczba daleko odbiega od dzielnika to wyświetla błąd. Definiując \(\displaystyle{ mod \left( n,d \right) =n-d \cdot \left( \frac{n}{d} \right)}\). Przy czym \(\displaystyle{ \left( \frac{n}{d} \right)}\) to podłoga z \(\displaystyle{ \frac{n}{d}}\) Mam błąd już przy 22!. Wcześniej liczy dobrze. Nie wiem czemu tak jest, ale mam jeszcze sporo czasu na zastanawianie się nad tym.
Wielkie dzięki za wszystkie posty, jestem dobrej myśli, że uda się policzyć te szatańskie liczby .
Ostatnio zmieniony 7 gru 2014, o 21:46 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
OShon
Użytkownik
Użytkownik
Posty: 65
Rejestracja: 4 mar 2014, o 00:32
Płeć: Mężczyzna
Lokalizacja: VBATools | Kraków | Poland | Europe | Earth | SolSystem | SomewareInSpace
Podziękował: 1 raz
Pomógł: 7 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: OShon »

O podobny problem natknąłem się podczas projektowania dodatku do numerów seryjnych, które to często są dość długie, albo wymagają iteracji z usunięciem wartości tekstowej.
W Excelu o ile chcesz zapisać tak wielka cyfrę w komórce musisz zmienić formatowanie na text ponieważ przy ogólnym zamieniana jest na miarę naukową, a przy liczbowym pomijane są wartości po 15 znaku liczby (reszta jest wypełniona zerami).

Oto przykład (o ile modek tego nie uwali)
AU
AU
Numery_seryjne_3PRO2-300x201.png (64.47 KiB) Przejrzano 408 razy
Oczywiście numer misi być obliczony albo jako LongLong w Excelu x64, albo partiami jak to jest realizowane w x86 (32bity).
Dobrą zasadą jest odcięcie 1 znak + długość iteracji, a resztę potraktować jako string.
Awatar użytkownika
Medea 2
Użytkownik
Użytkownik
Posty: 2491
Rejestracja: 30 lis 2014, o 11:03
Płeć: Kobieta
Podziękował: 23 razy
Pomógł: 479 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: Medea 2 »

Wielką liczbę, nie cyfrę... Poza tym, jeśli trzymasz liczby jako tekst, to nie możesz wykonywać na nich operacji arytmetycznych, więc to nie jest dobre rozwiązanie.
OShon
Użytkownik
Użytkownik
Posty: 65
Rejestracja: 4 mar 2014, o 00:32
Płeć: Mężczyzna
Lokalizacja: VBATools | Kraków | Poland | Europe | Earth | SolSystem | SomewareInSpace
Podziękował: 1 raz
Pomógł: 7 razy

[Excel] Wyliczanie dużych, dokładnych liczb

Post autor: OShon »

Medea 2, nie da się przetworzyć w Excelu wielkich liczb, ponieważ jest to ograniczone przez automatyzacje. Po drugie zawsze dane które mamy zapisane jako tekst możemy transformować na wartość/liczbę i obliczyć np w VBA.

Pow opisane rozwiązanie sprowadzone analogicznie do tego problemu działa i jego opis jest na mojej stronie internetowej.
ODPOWIEDZ