[fpc-devel] samevalue function issue

waldo kitty wkitty42 at windstream.net
Wed Sep 30 17:14:59 CEST 2015

On 09/30/2015 07:18 AM, Jonas Maebe wrote:
> Andrea Mauri wrote on Wed, 30 Sep 2015:
>> var
>> a, b: Double;
>> begin
>>   a:= 5.1000000000000005;
>>   b:= 5.1;
>>   if samevalue(a, b) then              // I get TRUE - right!
>>     label1.Caption:= 'same value (variable): True'
>>   else
>>     label1.Caption:= 'same value (variable): False';
>>   if samevalue(a, 5.1) then             // I get FALSE -- I supposed to get
>> TRUE- bad!
> That is because 5.1 cannot be represented exactly using floating point. As a
> result, the compiler will parse it using the highest precision available, which
> is probably the 80 bit extended type on your target platform. Therefore, the
> second samevalue calls the extended precision version of that routine, while the
> first one calls the double precision version (since both arguments are double).

so the OP should get the desired results if they use

   if samevalue(a, double(5.1)) then


  NOTE: No off-list assistance is given without prior approval.
        *Please keep mailing list traffic on the list* unless
        private contact is specifically requested and granted.

More information about the fpc-devel mailing list