[fpc-pascal] round(2.5)=2
Bernd Oppolzer
bernd.oppolzer at t-online.de
Fri Jun 8 17:58:28 CEST 2018
Am 08.06.2018 um 14:47 schrieb Klaus Hartnegg:
> Hi,
>
> The round function behaves different than in TurboPascal, and its
> English Wiki page differs from the German page.
>
> When given an argument halfway between to integers, FreePascal rounds
> to the nearest even number, TurboPascal always rounds up (except when
> it is set to mode $N+, but default is $N-).
>
> The German Wiki pages for Round and SetSoundMode (URLs below) contain
> a warning to not use SetRoundMode, because that also affects internal
> calculations, and how numbers are stored in variables when they do not
> fit with full precision.
>
> How serious is this issue compared with using a different rounding
> method?
>
> The german pages suggest to use this function instead:
> function round(x: Float): Integer; { requires unit math for 'float' }
> begin
> if x > 0 then
> round := trunc(x + 0.5)
> else
> round := -trunc(-x + 0.5);
> end;
>
> That is fine, except that I will likely forget it in some unit, and
> manually inspecting all units is less reliable than when the compiler
> ensures it.
>
This is not sufficient, IMO, when using float,
look here:
http://bernd-oppolzer.de/job9i032.htm
> In Turbo-Pascal the browsing feature (search,symbol) of the IDE can
> show a list of all places where system.round gets called. The
> FreePascal IDE does not show that list (see my other email).
>
> Is there some other reliable(!) way to fix or check this? Maybe a map
> file with all functions that got linked into the executable?
>
> The Wiki pages are
> - wiki.freepascal.org/Round
> - wiki.freepascal.org/Round/de
> - wiki.freepascal.org/SetRoundMode
> - wiki.freepascal.org/SetRoundMode/de
>
> If the warning is correct, there should also be a note on
> https://www.freepascal.org/docs-html/rtl/math/setroundmode.html
>
> thanks,
> Klaus
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list