html - 关于javascript写计算器
迷茫
迷茫 2017-04-10 16:17:35
0
2
902

用JS写一个网页计算器,想问一下怎么写开方这一运算,如果用JS内置的运算 sqrt(x),算出来的数不精确,有没有精确运算的思路,可以算出类似2√3这样的。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信 (2)
小葫芦

你想要多精确?小数点后几位?
从数值计算的角度来看,可以用牛顿迭代法,设f(x)=x^2-c=0是要求解的方程。那么方程f(x)的根的近似值可以用以下迭代式来求解x[n+1]=x[n]-f(x[n])/f'(x[n]);
其中f'(x)=2x,所以那个迭代式就可化为 x[n+1]=x[n]-(x[n]^2-c)/(2x[n])=(x[n]+c/x[n])/2。
当x[n+1]-x[n]小于指定的精度以后x[n+1]就是方程的解了~这个方法对于x[0]的选择比较敏感,越接近于真实的根越好。建议你先调用js的sqrt作为方程初始值x[0]。那么问题来了,一般来说js自带的sqrt方法精度应该不至于差到哪去,题主想要更高精度的话就要用字符串来代替js自带的number来达到更高的精度。这里楼主就要自己实现字符串的加以及除(实现除法运算要先实现减法运算)两种运算。这里要注意的是,根据楼主对最后计算精度的要求,除法运算应该保留更多的位数。
如果题主觉得我写的不够清楚可以自行百度:牛顿迭代法以及大数除法。个人感觉这两个是解决这个问题的核心。

いいねを押す+0
    PHPzhong

    算开方?只能给题主点建议

    1.把质数的完全平方,生成一个表,至于多大,就看需要了,当然如果追求性能的话,可以不选择质数

    2.数字输入时,先查表,如果有直接返回,如果没有则进行因式分解

    3.因式分解之后,合并同类

    4.合成结果

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!