math, bigly
Mark Waddingham
mark at livecode.com
Wed Aug 9 05:58:14 EDT 2017
On 2017-08-09 11:36, hh via use-livecode wrote:
>> Mark wrote:
>> but I'm annoyed that the IDE doesn't give me an overflow warning if I
>> try
>> to perform an operation on a number that's bigger than 0xFFFFFFFF.
>> Instead, it just happily trims it down to an unsigned integer and
>> proceeds
>> to give me a wrong result.
>
> Hey Mark.
> Don't complain because *you* are easily able to work around your
> "not-reading-the-dictionary" ;-))
>
> From the baseconvert entry of the dictionary:
> baseConvert(number, originalBase, destinationBase)
> The number must be an integer between zero and 4,294,967,295 (2^32 -
> 1).
The engine hasn't ever done range checks on integers - mainly because
numbers are doubles so (in most ases) you just lose accuracy / precision
as the numbers get larger. In this case it *could* because it is
actually using integers.
Although, perhaps, baseConvert should be a purely string->string
operation - I think that can be done relatively easily without ever
having to convert to an integer. This would mean you would be able to
base-convert any sized number, although you wouldn't necessarily be able
to perform non-precision losing arithmetic operations on the result.
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list