Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brojevi u pokretnom zarezu

[es] :: Pascal / Delphi / Kylix :: Brojevi u pokretnom zarezu

[ Pregleda: 2849 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Milosevic

Član broj: 67
Poruke: 932
*.bankerinter.net.



+31 Profil

icon Brojevi u pokretnom zarezu04.03.2005. u 23:51 - pre 233 meseci
Trba mi promenjiva u pokretnom zarezu koja nije ogranicena sa brojem mesta.
Konkretno, Nesto mnogo vece preciznosti od Extended tako da mogu da smestim
broj 1.3253536234272727272572572261135.... bez zaokruzivanja
i da sa zadovoljavajucom brzinom mogu da se primene sve standarde mat. operacije.
Probao sam da nacem ,ali do sada nisam uspeo.
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Brojevi u pokretnom zarezu05.03.2005. u 01:34 - pre 233 meseci
"nista nije beskonacno osim svemira i ljudske gluposti" (za ovo drugo ne mislim na nikog konkretno, samo mi je palo na pamet, da ne bude zabune) rece neko :)
ne postoji hardverski realni tip koji ima preciznost koju trazis, resenje je:
a) da napises neku klasu koja ce da radi sa velikim realnim brojevima (recimo stavi 128bit), tad moras da pises sve: od toga kako se cuva u memoriji do svake operacije
b) da nadjes nekog ko je to vec uradio, mislim da sam video na torry.net u VCL/Science da ima bas nesto tako
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Brojevi u pokretnom zarezu05.03.2005. u 08:38 - pre 233 meseci
Tako nesto postoji i u Delphi-u a zove se BCD - Binary Coded Decimal. Ovaj tip podataka se cesto koristi kod baza sa knjigovodstvenim podacima da bi se izbegle greske zaokruzivanja. BCD broj ima do 64 decimalna mesta i 256-bitnu znacajnu cifru, jedino sto se ne koriste standardni operatori, ali svaki operator ima odgovarajuce funkcije. Nisam radio sa BCD ali znam da postoje, pogledaj u Delphi help-u ili na netu.

Edit: Nema 256-bitnu znacajnu cifru, vec koristi 32 bajta za cuvanje znacajnih cifara, od kojih jedan bajt predstavlja 00-99, znaci 64 znacajne cifre, npr.:1212121212121212121212121212121212121212121212121212121212121212.
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Brojevi u pokretnom zarezu05.03.2005. u 11:30 - pre 233 meseci
znam to, ali covek rece da mu treba u pokretnom zarezu...bcd nekako sucks, u zavisnosti od toga da li je pakovan ili ne (ne znam koji delphi koristi) trazi 4 (8) bita za svaku cifru. neracionalno i sporo
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Brojevi u pokretnom zarezu07.03.2005. u 02:36 - pre 233 meseci
BCD i nije tako los samo ne mogu da se setim zasto :-)

Pisao je moj bivsi profa o tome na 10 strana (Slobodan Obradovic, VETS Beograd), i sve lepo objasnio, ali sam izgubio knjigu :-). Znam da nema greske koje su inherent u brojevima sa pokr. zarezom, npr. (1/3) * 3 <> 1.
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Brojevi u pokretnom zarezu07.03.2005. u 16:53 - pre 233 meseci
pa ok, sto se tih gresaka tice, postoji u delphi-ju (mislim u math.pas) par funkcija za uporedjivanje sa zadatom tacnoscu, tako je a=b <=> abs(a-b) < eps (matematicki). mislim, jednostavno je napisati ih, ali je korisno kad radis sa float brojevima.
bcd-ovi se lakse stampaju, pogotovo nepakovani. nizih 4 bita oznacavaju cifru (0-9) a u visih cetri bita se stavlja konstanta koja sa ovim nizi bitovima daje ASCII vrednost karaktera koji oznacava tu cifru.
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.bankerinter.net.



+31 Profil

icon Re: Brojevi u pokretnom zarezu09.03.2005. u 21:29 - pre 233 meseci
Probao sam BCD i nista to ne valja.Ogranicen je samo na 64 cifre.
i nema power funkciju.
U stvari napravio sam algoritam koji radi sa stringovima.
Sve to lepo radi samo imam problem kod dizanja na stepen.
Do 100-i stepen radi dosta dobro, ali na vecim stepenima se dosta gubi na brzini.
Pa ako neko mozda ima neki predlog za brzo stepenovanje neka napise.
Ako neko misli da to nije moguce neka pogleda program Matematika gde to
radi fenomenalno brzo.
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: Brojevi u pokretnom zarezu09.03.2005. u 23:41 - pre 233 meseci
Evo ja cu ti dati jedan predlog za stepenovanje do 65535 stepena sa maksimalno 32 mnozenja. Ako zelis da ti stepen ide do 2^31 onda umesto Word stavis Cardinal.

Ideja je ta da napravis 16 tih tvojih stringova gde ces da smestis redom: broj koji stepenujes i to u b[1]= broj b[2]=broj^2 u b[3]=broj^4 ... sve redom b[16]=broj^16.

Kako ces brzo da izracunas: b[1]=broj,b[2]=b[1]*b[1], b[3]=b[2]*b[2],b[4]=b[3]*b[3]...b[16]=b[15]*b[15]

Kada si upamtio vrednosti napravis for petlju koja ide od 1 do 16, ispituje da li je u stepenu upaljen (i-1) bit i ako jeste mnozi ga sa rezultatom.

Primer

12^189=12^128*12^32*12^16*12^8*12^4*12^1
posto sve te stepene imas sacuvane u nizu b[] treba ti samo 6 mnozenja+maksimalno 16 za pripremu.
znaci 12^189=b[8]*b[6]*b[5]*b[4]*b[3]*b[1]

Ako ti nesto nije jasno javi, ili posalji kod.

Pozdrav


 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.bankerinter.net.



+31 Profil

icon Re: Brojevi u pokretnom zarezu10.03.2005. u 21:28 - pre 233 meseci

Pa upravo moj algoritam i radi na slican nacin.
Samo sto prvo odredim najmanji broj prolaza.I to radi solidno do nekog 100 ili
200 stepena.Naravno broj cifara strasno brzo raste, pa se sistem usporava.
Postupak je prost ,broj^2 pa dobijeni Broj ^2 daje 4 ,8,16 stepen itd.
Medutim kad bi naso brzi algoritam za podizanje recimo na 3 ,a ne da koristim
br*br*br stvar bi isla mnogo brze.
Znam da moram da negde ogranjicim broj cifara, i da zaogruzim broj, ali mi treba
peciznost bar do 10^4000.
Ne znam kako ali u Matematici(mislim program) to radi fenomenalno brzo i do
10000-tog stepena.
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: Brojevi u pokretnom zarezu10.03.2005. u 21:43 - pre 233 meseci
Pa cekaj, onda imas problem sa mnozenjem velikih cifara a ne sa stepenovanjem. Kada ga dizez na 200, pravis jedno 8-10 mnozenja (da ne racunam). Znaci unapredi algoritam za mnozenje. Bas bih voleo da vidim na koji nacin mnozis stringove. Zar nije bolje da si to stavio u niz bajtova, a zatim da napravis neku funkciju poput BrojToStr koji ce to sve da spremi u string i StrToBroj koji ce string staviti u array.

Nocas bas nemam pametnija posla pa cu malo da se zezam sa ovim :)

Pozdrav

Prikačeni fajlovi
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: Brojevi u pokretnom zarezu11.03.2005. u 01:05 - pre 233 meseci
Evo kao sto sam obecao: mali kalkulator.

Moze da mnozi, sabira i stepenuje brojeve do 50000 cifara
broj 2 dize na 10000 za manje od sekunde na 2500MHz

Deljenje i oduzimanje nisam radio kao ni negativne brojeve. To moze lako da se sredi. Pogledaj osnovu. Uglavnom do 20000 cifara mu nije problem sto se tice brzine.

Skini fajl pa vidi ako moze da ti pomogne.

Pozdrav!
Prikačeni fajlovi
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.bankerinter.net.



+31 Profil

icon Re: Brojevi u pokretnom zarezu11.03.2005. u 23:06 - pre 233 meseci

Proverio sam tvoj program i radi malo brze nego moj algoritam.
Verovatno ima i brza varijanta, ali ako ipak malo ogranicim preciznos to
bi trbalo da radi dovoljno dobro.Nadam se da ce da posluzi.
Hvala ti na trudu i pomoci.
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.bankerinter.net.



+31 Profil

icon Re: Brojevi u pokretnom zarezu11.03.2005. u 23:30 - pre 233 meseci
Testirao sam tvoj program jos malao i nikako nisam mogao da podignem
200 na 10000 .uvek padne.
Neverujem da je zbog rama, imam 512 mb i atlon 2500+
Mozda je zbog delphi-ja, imam delphi6 koji hoce ponekad da zezne stvari pa
zbog toga izbegava da koristim nizove.
Poslao bih ti moju varijantu koda ali ne znam kako se to radi preko ovog foruma.
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Brojevi u pokretnom zarezu11.03.2005. u 23:36 - pre 233 meseci
Kad postavis post na es, dole uz poruku imas link "Upload uz poruku".
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: Brojevi u pokretnom zarezu11.03.2005. u 23:43 - pre 233 meseci
Radice ti samo gore u programu umesto 1..30000 stavi array[1..50000].

Ja sam vrednost 30000 stavio kao probu.Evo uradio je:



Kod svoje zadnje poruke (znaci kada si vec poslao poruku) dole ispod nje imas opciju "upload uz poruku".Ogranicenje je 100KB.

Naravno da sve moze brze, samo treba malo poraditi.
Prikačeni fajlovi
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.bankerinter.net.



+31 Profil

icon Re: Brojevi u pokretnom zarezu12.03.2005. u 21:14 - pre 233 meseci
Da sad radi. Evo i mog programa neznatno je brzi , ali to je to.
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Brojevi u pokretnom zarezu

[ Pregleda: 2849 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.