Looks like the largest decimal number that can be represented then is 
4.50359962737E+15, or 4503599627370000

Bob S


> On Dec 10, 2015, at 10:46 , Peter TB Brett <peter.br...@livecode.com> wrote:
> 
> On 2015-12-10 17:54, Geoff Canyon wrote:
>> LiveCode works in 64 bit numbers, so why does
>> put 10000000000 * 1000000000000000000000000000000
>> result in
>> 10000000000000000303786028427003666890752
>> which is close to the right answer, instead of some 18 digit value?
> 
> When numbers are too large to represent exactly, LiveCode automatically 
> shifts to using 64-bit IEEE floating point representation.  Floating-point 
> numbers store a number in three pieces:
> 
> 1) a sign bit
> 2) an exponent (11 bits)
> 3) a mantissa (52 bits)
> 
> This is a bit like writing decimal scientific notation.  The "true" value is 
> 1.<MANTISSA> * 2^<EXPONENT>, modified by the SIGN.
> 
> This means that much much larger numbers than 2^64 can be represented in only 
> 64 bits, but at the cost of loss of accuracy (because the mantissa is only 53 
> bits).  As you've noticed, the result of your calculation is only *close to* 
> the right answer.  It can accurately represent any number that only requires 
> 53 bits of precision.
> 
> See also https://en.wikipedia.org/wiki/Double-precision_floating-point_format
> 
>                                          Peter
> 
> -- 
> Dr Peter Brett <peter.br...@livecode.com>
> LiveCode Open Source Team
> 
> LiveCode on reddit! <https://reddit.com/r/livecode>
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to