Skip to content

javecs/expr

Repository files navigation

expr 

Build Status codecov Download GitHub license

数式を計算します。

使い方

Gradle

  • 依存関係を設定してください。
    repositories {
        maven {
            url  "http://dl.bintray.com/javecs/tools"
        }
    }
    
    dependencies {
        compile 'xyz.javecs.tools:expr:0.2.+'
    }
    

eval()

  • 簡単に1つの数式を計算します。

    val value = eval("3 + 4")
    println(value)
    
    結果は、 7 です。
    

Calculator

  • 変数、関数など、複数の数式を計算します。

  • 0.1.+ 以上で使えます。

  • クラスを作るときに、数式を渡すことができます。

    val expr = arrayOf("x = 3 + 4", "y = 30 + 40", "x + y")
    val value = Calculator(expr).eval().value
    println(value)
    
    結果は、 77 です。
    
  • あるいは、後から数式を1つずつ計算することも可能です。

    val calc = Calculator()
            .eval("x = 3 + 4")
            .eval("y = 30 + 40")
            .eval("x + y")
    println(calc.value)
    
    結果は、 77 です。
    
  • 変数と計算結果を初期化するときには、Calculatorのclear()を実行してください。

Function

  • ユーザー定義関数をプラグインとして実行できます。

  • 0.2.+ 以上で使えます。

  • Functionを作成して、pluginで登録してください。

    val value = Calculator()
            .plugin(Function("f(x)", arrayOf("x + 1")))
            .plugin(Function("g(x,y)", arrayOf("f(x) * y")))
            .eval("x = 3")
            .eval("y = 4")
            .eval("g(x,y)")
            .value
    println(value)
    
    結果は、 16 です。
    

計算可能な数式

演算子

演算子 説明 結果
 ^ 累乗 2 ^ 3 ^ 2 512 (2^(3^2)と処理されます)
+(符号) 正数 +1 1
-(符号) 負数 -1 -1
 * 掛け算 3 * 4 12
 / 割り算 3 / 4 0.75
 % 余り 7 % 4 3
 + 足し算 3 + 4 7
 - 引き算 3 - 4 -1
  • 演算の優先順位は、上記の表の上から下の順になります。括弧( )を使えば、括弧内を先に計算します。

    (3 + 4) * 5 
    
    この結果は、 35 になります。
    

変数

  • 計算した結果を変数に代入することができます。

  • 変数名は、英小文字から始まる1文字以上の文字列です。2文字目からは、英数字が使えます。

  • 計算結果が代入された変数同士での演算も可能です。

    x = 3 + 4
    
    x には、7 が代入されます。
    
    x = 3
    y = 4
    z = x + y
    
    z には、7 が代入されます。
    

常数

常数名 説明 結果
e 自然対数の底eにもっとも近いdouble値です。 e 2.7182818284590452354
pi 円周とその直径の比piにもっとも近いdouble値です。 pi 3.14159265358979323846
  • 常数名の文字は、大文字と小文字を区別しません。

関数

関数名 説明 結果
sin 指定された角度の正弦(サイン)を返します。 sin(1) 0.8414709848078965
cos 指定された角度の余弦(コサイン)を返します。 cos(1) 0.5403023058681398
tan 指定された角度の正接(タンジェント)を返します。 tan(1) 1.5574077246549023
asin 指定された値の逆正弦(アーク・サイン)を返します。 asin(1) 1.5707963267948966
acos 指定された値の逆余弦(アーク・コサイン)を返します。 acos(0) 1.5707963267948966
atan 指定された値の逆正接(アーク・タンジェント)を返します。 atan(1) 0.7853981633974483
atan2 直交座標(x, y)から極座標(r, theta)への変換から得られる角度thetaを返します。 atan2(90, 15) 1.4056476493802699
sinh double値の双曲線正弦を返します。 sinh(1) 1.1752011936438014
cosh double値の双曲線余弦を返します。 cosh(1) 1.543080634815244
tanh double値の双曲線正接を返します。 tanh(1) 0.7615941559557649
exp オイラー数eをdouble値で累乗した値を返します。 exp(1) 2.718281828459045
log 指定されたdouble値の自然対数(底はe)を返します。 log(2) 0.6931471805599453
log10 double値の10を底とする対数を返します。 log10(2) 0.3010299956639812
sqrt double値の正しく丸めた正の平方根を返します。 sqrt(2) 0.3010299956639812
hypot sqrt(x2 +y2)を返します(途中でオーバーフローやアンダーフローは発生しない)。 hypot(3, 4) 5
rad 度で計測した角度を、相当するラジアンに変換します。 rad(1) 0.017453292519943295
deg ラジアンで計測した角度を、相当する度に変換します。 deg(1) 57.29577951308232
max 2つのdouble値のうち大きいほうを返します。 max(e, pi) 3.141592653589793
min 2つのdouble値のうち小さいほうを返します。 min(e, pi) 2.718281828459045
format 指定の小数点以下で四捨五入した結果を返します。 format(10/3, 2) 3.33
  • 関数名の文字は、大文字と小文字を区別しません。

Javaからの呼び出し方

  • eval()は、スタティクメッソードで呼びます。

    Number value = Evaluator.eval("3 + 4");
    
  • Calculatorは、通常のクラスとして使えます。

    Calculator calc = new Calculator();
    calc.eval("3 + 4");
    Number value = calc.getValue();
    

使われているところ...

使うもの