2

私はjavascriptで電卓を作成していますが、現在のところ、、、、、、、および sinすべてcosのサブタイプ 、、、、、およびを計算しています。問題は、関数としてを持ちたくないということです。たとえば、次のように入力できるようにしたいのです。tancotseccscarchyberbolicsqrtcbrty-th rootpowpow(x,y)

2^3+2^4 # instead of pow(2,3)+pow(2,4)

上記のように関数を入力するにはどうすればよいですか?これを表示するための計算機は次のとおりです:http://calcy.comze.com/

4

2 に答える 2

2

^表記をpow関数に変換するかMath.pow、正規表現を使用して変換できます。

'2.14^3+ 2^2.5 - 12'.replace(/(\d+(?:\.\d+)?)\^(\d+(?:\.\d+)?)/g, function(a, b, c) {
    return 'pow(' + b + ', ' + c + ')';
})
// pow(2.14, 3)+ pow(2, 2.5) - 12

このアプローチを使用すると、電力の結果を事前に計算して、キャロットを次のように置き換えることもできます。

'2^3+ 2^2.5 - 12'.replace(/(\d+(?:\.\d+)?)\^(\d+(?:\.\d+)?)/g, function(a, b, c) {
    return Math.pow(b, c);
});
// 8+ 5.656854249492381 - 12
于 2013-02-23T07:01:25.687 に答える
0

文字列に数式があると思います。これがあなたがそれをすることができる方法です:

numbr protoを拡張して、次のpowメソッドを作成します。

Number.prototype.pow = function(n){
   return Math.pow(this,n);
}

すべての数字を折り返し、次のよう()に置き換え^ます.pow()

str = str.replace(/[\d|\d.\d]+/g, function(n){
   return '(' + n + ')'
})
.replace(/\^/g, '.pow')

文字列を評価する

eval(str)

実例: http: //jsbin.com/igegok/1/edit

于 2013-02-23T06:32:11.437 に答える