[fpc-pascal] Floating point question
Ralf Quint
freedos.la at gmail.com
Sun Feb 4 21:47:52 CET 2024
On 2/4/2024 12:32 PM, James Richters via fpc-pascal wrote:
>
> >> Not specifying in a program, specially in a strict programming
> language like Pascal, will always result in implementation depending
>
> >> variations/assumptions.
>
> The problem is, I feel that I DID specify what should be by declaring
> my variable as Extended. And Apparently FPC agrees with me, because it
> DOES work the way I expect, except if I put a .0 in my constant
> terms.This is all just a bug if you put .0 after any integers in an
> expression.I just put a better example that shows how it works
> correctly except if you put a .0
>
> Strangely, upon discovering this, the solution is opposite what I
> thought it should be.If all the terms of an expression were reduced to
> the lowest precision possible without loosing data, then my 1440.0
> would be reduced from a float to a word, and then the entire problem
> would have went away, because when I put in 1440 without the .0, there
> is no problem.The .0 is apparently defining it to be a floating point
> and the smallest floating point is a single… but that’s not the
> smallest data structure, the smallest data structure that can be used
> is a word and that would have solved it.
>
Sorry, but that doesn't make any sense. If you just add the .0, you
specify a floating point value, ANY floating point value. This is kind
of obvious in a programming language that has only one type of floating
point value (yes, they are less common these days as they used to be in
the "days of old"). But you did not specify WHICH type of the possibly
floating point values you are expecting, and there are three different
ones (single, double, extended). What happens when you assume an
integer/word/longint by omitting the decimal fraction, that's a
different discussion.
But I would expect that you you explicitly use a typecast as in
"extended (1440.0)" that the compiler is using an extended floating
point calculation at that point. Specifying the resulting variable to be
a specific type is IMHO not implying that ALL calculations of a whole
expression are performed in that variable's type. If the compiler would
ignore an explicit type cast of a constant, THEN I would call this a bug.
Ralf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20240204/83b9a111/attachment-0001.htm>
More information about the fpc-pascal
mailing list