Skip to content

数式処理

数式の計算

Eval() に数式を渡すと、double 型の精度での計算結果を返します。EvalOpt() は戻り値の型が Optional<double> で、数式にエラーがある場合は none を返します。

# include <Siv3D.hpp>

void Main()
{
    Scene::SetBackground(ColorF(0.8, 0.9, 1.0));

    const Font font(30, Typeface::Bold);

    TextEditState tes;

    Optional<double> result = 0.0;

    while (System::Update())
    {
        // 数式を入力するテキストボックス
        if (SimpleGUI::TextBox(tes, Vec2(20, 20), 700))
        {
            // 結果を取得(エラーの場合 none)
            result = EvalOpt(tes.text);
        }

        if (result)
        {
            font(result.value()).draw(Rect(20, 100, 760, 500), ColorF(0.25));
        }
        else
        {
            font(U"Error").draw(20, 100, ColorF(0.25));
        }
    }
}