Delphi FAQ

FAQ

7 komentarzy

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

uses Math

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

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

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.

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;

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.

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