|
Post by alexfish on Aug 10, 2023 3:53:12 GMT 1
Hi Peter
can you test these functions
here on pi I get different results(looking for whole numbers)
tail of double
Step : 23.6 counter dist :24 Step : 24 Step : 24.4 Step : 24.8 counter dist :25 Step : 25.2 Step : 25.6 counter dist :26 Step : 26 Step : 26.4 Step : 26.8 counter dist :27 Step : 27.2 Step : 27.6 counter dist :28 Step : 28 Step : 28.4 Step : 28.8 counter dist :29 Step : 29.2 Step : 29.6 counter dist :30 Step : 30 Step : 30.4 Step : 30.8 counter dist :31 Step : 31.2 Step : 31.6 counter dist :32 Step : 32 Step : 32.4 Step : 32.8 counter dist :33 Step : 33.2 Step : 33.6 counter dist :34 Step : 34 Step : 34.4 Step : 34.8 counter dist :35 Step : 35.2 Step : 35.6 counter dist :36 Step : 36 Step : 36.4 Step : 36.8 counter dist :37 Step : 37.2 Step : 37.6 counter dist :38 Step : 38 Step : 38.4 Step : 38.8 counter dist :39 Step : 39.2 Step : 39.6 counter dist :40 Step : 40
float
counter dist :29 Step : 29.2 Step : 29.6 counter dist :30 Step : 30 Step : 30.4 Step : 30.8 counter dist :31 Step : 31.2 Step : 31.6 counter dist :32 Step : 32 Step : 32.4001 Step : 32.8001 Step : 33.2001 Step : 33.6001 Step : 34.0001 Step : 34.4001 Step : 34.8001 Step : 35.2001 Step : 35.6001 Step : 36.0001 Step : 36.4001 Step : 36.8001 Step : 37.2001 Step : 37.6001 Step : 38.0001 Step : 38.4001 Step : 38.8001 Step : 39.2001 Step : 39.6001 Step : 40.0001
BaCon Version Latest(4 days ago)
BaCon version 4.7.1 on Linux aarch64 - (c) Peter van Eerten - MIT License.
BR Alex
|
|
|
Post by Pjot on Aug 10, 2023 9:30:39 GMT 1
Hi Alex,
I am not sure which functions you are referring to?
Anyway, in C, the 'float' type and the 'double' type can behave differently. The 'float' type uses less bytes to store information.
PRINT SIZEOF(float) PRINT SIZEOF(double)
Output on my laptop:
4 8
Because of float using less bytes for storage, the 'float' type is prone to rounding errors.
It sometimes can happen that a float variable containing "0.1" cannot be compared with a calculated float value of "1/10"; the comparison will return FALSE.
If, however, the variable would have been of 'double' type then it might succeed.
In all cases you have to be aware of such rounding errors, they happen in native C as well.
HTH Peter
|
|