Thread View: pl.comp.lang.pascal
7 messages
7 total messages
Started by malysz79
Sun, 21 Oct 2007 07:03
Typ zmiennej?
Author: malysz79
Date: Sun, 21 Oct 2007 07:03
Date: Sun, 21 Oct 2007 07:03
29 lines
1306 bytes
1306 bytes
Mam prosty program: program sam; var n,c,d:extended; begin d:=1111111111; c:=1111111111; n:=d*c; writeln(n:0:0); end. daje wynik: 1234567900987654300 teraz ten sam program przy innej typie zmiennej: program sam; var n,c,d:real; begin d:=1111111111; c:=1111111111; n:=d*c; writeln(n:0:0); end. daje wynik: 1234567900987654000 A to właściwy wynik: 1234567887654321 Co jest nie tak? -- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Typ zmiennej?
Author: Tygrys
Date: Sun, 21 Oct 2007 08:46
Date: Sun, 21 Oct 2007 08:46
42 lines
2033 bytes
2033 bytes
malysz79@poczta.onet.pl pisze: > Mam prosty program: > program sam; > var > n,c,d:extended; > begin > d:=1111111111; > c:=1111111111; > n:=d*c; > writeln(n:0:0); > end. > daje wynik: 1234567900987654300 > teraz ten sam program przy innej typie zmiennej: > program sam; > var > n,c,d:real; > begin > d:=1111111111; > c:=1111111111; > n:=d*c; > writeln(n:0:0); > end. > daje wynik: 1234567900987654000 > > A to właściwy wynik: 1234567887654321 > > Co jest nie tak? > Wszystko jest tak. Policz to sobie na kalkulatorze i też dostaniesz obcięcie dokładności. Typy zmiennoprzecinkowe jak real, double czy extended potrafią pamiętać kilka-kilkanaście cyfr znaczących z liczby, tzn. np liczbę 1234567890 zapamiętają jako 123456 * 10E4, czyli 1234560000. A to, jaka jest dokładność przechowania danych dla różnych typów zobaczysz w helpie albo dokumentacji. Do dokładnych obliczeń musisz używać liczb całkowitych, niestety ich zakres jest ograniczony, nawet dla typu int64. Większa dokładność jest możliwa przy użyciu specjalnych klas, nie będących standardowo w pascalu Tygrys
Re: Typ zmiennej?
Author: Geo
Date: Sun, 21 Oct 2007 10:53
Date: Sun, 21 Oct 2007 10:53
6 lines
1402 bytes
1402 bytes
> Co jest nie tak? To proste - masz za mala wiedze na temat precyzji liczb zmiennoprzecinkowych - temat z liceum lub z pierwszego roku studiow. To wlasnie jest tym, co jest nie tak!
Re: Typ zmiennej?
Author: webmajsterek
Date: Sun, 21 Oct 2007 11:39
Date: Sun, 21 Oct 2007 11:39
45 lines
1980 bytes
1980 bytes
> Mam prosty program: > program sam; > var > n,c,d:extended; > begin > d:=1111111111; > c:=1111111111; > n:=d*c; > writeln(n:0:0); > end. > daje wynik: 1234567900987654300 > teraz ten sam program przy innej typie zmiennej: > program sam; > var > n,c,d:real; > begin > d:=1111111111; > c:=1111111111; > n:=d*c; > writeln(n:0:0); > end. > daje wynik: 1234567900987654000 > > A to właściwy wynik: 1234567887654321 > > Co jest nie tak? > http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/026.php liczba real -- to przestarzaly typ nie nalezy go juz stsowac . po wymnozeniu liczby zmiennoprecinkowej --najmneij znaczace bity sa wycinane ( nie mieszcza sie w zapisie ) -- tak ze jak konwertujesz na liczbe dziesietna to widzisz ze wynik odbiega od oczekiwanego wyniku . jak potrzebujesz duze liczby calkowite to uzywaj Longint , DWord , lub QWord ( 20 cyfr dziesietnych miesci sie w tym typie ) -- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Typ zmiennej?
Author: Solaris
Date: Sun, 21 Oct 2007 18:54
Date: Sun, 21 Oct 2007 18:54
10 lines
1025 bytes
1025 bytes
Polecam (istnieje także bind dla freepascala). http://swox.com/gmp/ -- Home: admin.idns.pl Linux registered user: 408584 Contact: GG#44450, solaris#idns.pl 19:16:28 -!- Platyna Erroneous Nickname
Re: Typ zmiennej?
Author: Wiktor S.
Date: Mon, 22 Oct 2007 11:51
Date: Mon, 22 Oct 2007 11:51
11 lines
1094 bytes
1094 bytes
> liczba real -- to przestarzaly typ nie nalezy go juz stsowac . Przestarzały to on jest tylko w przestarzałym Turbo Pascalu. w FPC i Delphi jest type real=double; -- Azarien
Re: Typ zmiennej?
Author: Kicer
Date: Fri, 26 Oct 2007 14:56
Date: Fri, 26 Oct 2007 14:56
16 lines
1268 bytes
1268 bytes
Geo wrote: >> Co jest nie tak? > > > To proste - masz za mala wiedze na temat precyzji liczb > zmiennoprzecinkowych - temat z liceum lub z pierwszego roku studiow. > To wlasnie jest tym, co jest nie tak! całe szczęscie ze wszyscy konczą licea i ida na studia a tak pozatym poczytaj http://rtfm.killfile.pl/#pomoc bo widze ze masz z tym duze problemy -- Michał Walenciak, gg: 3729519, mail: Kicer86 na gmail kropka com http://kicer.elsat.net.pl
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads