It appears that when using the String() function to convert a Real to string, extra digits are added. I am seeing the same issue in the debugger.
I set a Real to:
2.5E38
Then I convert to String:
2.500000072189495E+38
I passed the Real to a dll written in C and converted it to string there and got:
2.500000E+38
As you can see, there are extra digits that shouldn't be there.
I'm thinking of submitting a bug report but thought I would get some feedback first.
Several PB system functions take double as the input datatype so you get "auto-convert" from real to double. That's what you see here. I had similar issue with LongLong at 16+ digits. They loose precision when calling the Mod function! Why? Because they auto-convert to double.
Solution (sometimes): Assign to DECIMAL which keeps precision (on the cost of performance I presume.)