[ 00000110001 @ 11.02.2009. 10:44 ] @
pozdrav
ako je vec bilo govora o ovoj temi moze li mi neko samo link dati.
imam totalno jednostavan proble.
code izgleda ovako
Code:

var
e, k: double;
begin
  e:=0;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  e:=e+1.1;
  {sad je e=11}
  k:=trunc(e);
  {a ovdje je k=10}
end;

nisam bas siguran da razumijem u cemu je ovdje fora, mozda ovo "e=11" nije ustvari 11 nego 10,9999999999999... ili tako nesto :)

ili ako postoji neka druga funkcija, sa kojom bih mogao da odbacim vrijednosti poslije zareza tj. da dobijem integer (ali ne nesto kao ROUND).
havala unaprijed
[ sanja2010 @ 11.02.2009. 11:43 ] @
Citat:
nisam bas siguran da razumijem u cemu je ovdje fora, mozda ovo "e=11" nije ustvari 11 nego 10,9999999999999... ili tako nesto :)

Upravo to. Dolazi do sitne greske pri konverziji u binaran broj i onda ce to procesor da ima kao 10.999999nesto :) Trunc kasnije radi svoj posao, odsece decimale, pa ostane 10. Mozes e i k da deklarises kao extended umesto double.