🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
7 messages
7 total messages Started by malysz79 Sun, 21 Oct 2007 07:03
Typ zmiennej?
#92190
Author: malysz79
Date: Sun, 21 Oct 2007 07:03
29 lines
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?
#92193
Author: Tygrys
Date: Sun, 21 Oct 2007 08:46
42 lines
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?
#92191
Author: Geo
Date: Sun, 21 Oct 2007 10:53
6 lines
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?
#92194
Author: webmajsterek
Date: Sun, 21 Oct 2007 11:39
45 lines
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?
#92196
Author: Solaris
Date: Sun, 21 Oct 2007 18:54
10 lines
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?
#92195
Author: Wiktor S.
Date: Mon, 22 Oct 2007 11:51
11 lines
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?
#92192
Author: Kicer
Date: Fri, 26 Oct 2007 14:56
16 lines
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