JavaScript Woes

 

The problem is "a lack of precision"

While JavaScript is quickly becoming the lingua franca of the web, this general purpose language contains built-in limitations which restrict its use to simple applications. For example, I recently attempted to write a Diffie-Hellman Key-Exchange Demo in JavaScript but detected problems during testing which I traced to a lack of mathematical precision. Check out these comparisons:

JavaScriptMath.pow(7,18) 1,628,413,597,910,449 correct
Calculator7^181,628,413,597,910,449 correct
     
JavaScriptMath.pow(7,19)11,398,895,185,373,144 incorrect
Calculator7^19 11,398,895,185,373,143correct
      
JavaScriptMath.pow(7,20) 79,792,266,297,612,000incorrect
Calculator 7^2079,792,266,297,612,001correct
     
JavaScriptMath.pow(7,21) 558,545,864,083,284,030incorrect
Calculator 7^21558,545,864,083,284,007correct

PERL Workaround

Legend:	<sr> = system response
	<ur> = user response

<sr>	$
<ur>	type bigint_demo.pl
	#
	#       title: bigint_demo.pl
	#
	use bigint;             # use bigint after this point
	$x = 7 ** 19;           # x = 7^19
	printf("%s\n",$x);      # "%s" because other formats bomb
<sr>	$
<ur>	perl bigint_demo.pl
<sr>	11398895185373143	! correct
<ur>	$

Related Links


Back to OpenVMS
Back to Home
Neil Rieck
Kitchener - Waterloo - Cambridge, Ontario, Canada.