JavaScript Woes

 
Quick Nav Menu
  1. JavaScript's lack of mathematical precision
  2. PERL workaround
  3. Related links

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.