Programowanie w języku Delphi » FAQ

7 komentarzy

akpert 2012-05-14 14:04

Nie znalazłem mojego wpisu roundto z wartościami po przecinku,poprzedni wpis 2006-03-13 15:39
prawidłowo
Roundto(2.5,-2)=2.5
Roundto(3.5,-2)=3.5
Źle!!!(systemem księgowym USA)
Round(2.5)=2
Round(3.5)=4

akpert 2006-03-13 15:39

uses Math

SetRoundMode(rmUp);
RoundTo(1.5,0)=2
RoundTo(2.5,0)=3

akpert 2006-01-18 10:25

informacja - system zaokrągleń w rund jest systemem księgowym USA

Marooned 2006-01-17 18:07

yy...
Round(2,5) równa się 2
Round(1,5) też równa się 2
:|
Co ma na celu funkcja, która tak działa? Bo niezbyt rozumiem... round to round - poniżej x,5 = x, powyżej lub równe x,5 = x+1
Ta funkcja powinna nazywać się magic_round()

Round powinien ZAWSZE działać tak:
round(a) = (floor(a+0.5));
w innym przypadku może prowadzić do kosmicznych błędów w obliczeniach a znalezienie "błędu" to masakra jeśli ktoś przyjmuje, że round działa prawidłowo.

akpert 2006-01-17 12:07

Uwaga na Round, zaokrągla 0,5 do najbliższej liczby parzystej.
Round(2,5) równa się 2
Round(1,5) też równa się 2
wyjście z sytuacji
  function Zaokraklij(x:Double):Integer;
  begin
    if x<0 then
         result:=Trunc(x-0.5)
    else
         result:=Trunc(x+0.5);
  end;

Marooned 2006-04-09 17:24

Wnioskuję o usunięcie tego tekstu albo całkowitą reorganizację.
Nawet nie ma opisu funkcji 'trunc' wspomnianej w temacie.
Poza tym - trunc nie zaokrągla ale obcina.
W obecnej postaci wskazówka jest bezwartościowa.

Coldpeer 2006-04-09 10:57

hmm... a po co było dawać to faq, jak juz istnieją takie teksty (nawet dałeś z Zobacz też) ? :/