I raised a service request on this in 2010 (SR 42278266 CCR 846991 Large number multiplication error)
This was part of the response:
The service request example is using a list “signed int” type which corresponds to a 32bit internal number.
220000000 is 0x0D1CEF00 in hex (28 bits set)
220000000*10 = 2200000000 or 0x83215600 (32 bits set)
An overflow occurs because the MSB is set which turns the number into a negativevalue.
To evade this problem, we could use a list double type which has the range needed but would have the following problem:
- checking for overflow or underflow if we are converting back to an int type.
- We can accommodate the approximation of floating point numbers on digital computers and
axlGeoEqual can help with this.
However, the SR was closed with no commitment to fix the problem. I have got used to working around the problem by ensuring that my code doesn't use such large integers.