least IEEE and most other popular formats) are binary, not decimal, and 1.03 in binary is periodic.
Afterwards, it finds `e+02' and multiplies the result by 100 which can be done exactly, but the error was already made.
[...]
Is this really computer dependent or does it depend of the program ?
Floating point behaviour is dpendant on a lot of things: - Processor (and its configuration, status word etc). - RTL routines. - User routines.
What I don't understand is that there is no problem if Readln reads 10.3e+01 in the file (10.3 isn't periodic in binary). And if it reads 103000e-03 (103000 IS periodic), the value is slightly wrong... (I tested this strange behaviour with the program shown below.)
That is normal. For periodic ones, you'll have to round, if it isn't, the value is within precision.