Jaki typ danych dla dużej liczby ?

0

Witam,
jestem początkujacy i mam problem:
jaki typ danych ustawić gdy chcę przechować bardzo dużą liczbę (30 cyfr) w SQL FireBird ?

0

stringa :P bo 30 cyfr to jest dość sporo, potrzebowałbyś na to ~100 bitów a ta baza największe typy liczbowe ma pewnie 64 bitowe.

0

tylko ze ja musze wykonac dzialanie na tej duzej liczbie :/ a dokładnie modulo

0

A modulo ile? Bo moze nie musisz trzymać w bazie calej tej liczby tylko jej "końcówkę" w takim razie?

0

modulo 97, bo chodzi o sprawdzanie poprawnosci numeru IBAN np. PL843984953...., proces tworzenia tej liczby juz mam, ostatni krok to wlasnie podzielic ja przez 97 i sprawdzic czy reszta = 1

0

No to teraz zastanów się czy faktycznie potrzebujesz 30 cyfrowej liczby żeby policzyć z niej modulo 97 ;)

0

hmm.. dla liczb złożonych to nie problem, bo mozna ja rozlozyc na czynniki i sprawdzamy czy ta liczba dzieli sie przez te czynniki. a 97 nie jest zlożona, jest liczbą pierwszą :/

0

No tak, ale jak od liczby odejmiesz 97floor(liczba/97) to reszta z dzielenia tej liczby przez 97 pozostanie taka sama...
np. dla 300:
floor(300/97) = 3
300 - 3
97= 9
300%97 = 9
9%97 = 9

0

A tak nie można?

int modulo = 0;
for każda cyfra w IBAN
   modulo = ((modulo * 10) + cyfra) % 97
0

Można, sam to trzy dni temu pisałem w Clipperze.
A tu przykłady w kilku językach (z SQL włącznie).
http://pl.wikipedia.org/wiki/International_Bank_Account_Number

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