2016-10-05 14 views
1

間違って出てくる:Math.pow()は、私はExcelで作業してしまったこの式のJavaScriptバージョンを作成しようとしている

Excelのバージョンを:

10000*(1+0.06)^30+6000*(((1+0.06)^30-1)/0.06) 

これは531784.029

に出て算出し、

JavaScriptバージョン:

console.log(10000*(1+0.06)^30+6000*(((1+0.06)^30-1)/0.06)); 

戻り値:2789622

または私はMath.pow()を使用しようとすると:

console.log(10000*(Math.pow(1+.06),30)+6000*(Math.pow((1+.06),30-1)/.06)); 

戻り値:841838.7898974773

私は約6時間後に完全に困惑。それをどのように再現して同じ数値を得るのですか? Excelのと同じ動作については

+0

あります30-1と1 + 0.06のショートカット? –

+0

'(1 + 0.06)^ 30'あなたはそれが正しいと確信していますか? '^'はJavaScriptの中でXORを実行し、Excelではそうではありません。 – vlaz

+0

また、2回目の ''(Math.pow(1 + .06)、30) 'で大括弧が間違っています。それがするのは、_evaluate_ 'Math.pow(1 + .06)'です。そして、それを破棄し、コンマのために '30'を返します。おそらく' Math.pow(1 + .06,30) 'が必要です。 – vlaz

答えて

3

ちょうどJSでMath.pow機能への事業者や間違ったパラメータの間違った順序を持っているあなた、それは次のようにする必要があります:

console.log(10000*(Math.pow(1+.06,30))+6000*((Math.pow(1+.06,30)-1)/0.06));

^ javascriptの演算子はexcelと同じではなく、jsではビット単位のxor演算を意味し、excelではMath.powと同じ意味を持ちます。

javascriptのMath.powの機能には2つのパラメータがあります。たとえば、excel 1.06^30と同じ操作を行う場合は、Math.pow(1.06,30)をjavascriptで実行します。道による

は、多分あなたは、たとえば置くだけのものですが、あなたはあなただけ1.06を書くことができ1+.06を追加する必要がいけない:あなたがいないなら理由は

console.log(10000*(Math.pow(1.06,30))+6000*((Math.pow(1.06,30)-1)/0.06));

+1

私はちょうどほぼポストをヒットしていましたが、同じくらい同じことを言っていましたが、あなたは私より2秒ほど速かったです:) – vlaz

+0

@vlaz jsスニペットコードをありがとう...どうすればいいのだろうかと思っていました –

+1

かなり恥ずかしいです、実際には、あなたが投稿しているときにエディタにボタンがあることを理解するために_a month_のように私がかかった。ほとんどのボタンの中央にある '<>'の小さなページです。 – vlaz

関連する問題