Загрузка данных


using UnityEngine;
using TMPro;

public class Calculator : MonoBehaviour
{
    public TMP_Text exprText;    // верхняя строка (выражение)
    public TMP_Text resultText;  // большая строка (число)

    string a = "";        // первое число
    string op = "";       // действие
    string b = "";        // второе число
    bool done = false;    // true, если только что нажали "="

    void Start()
    {
        Show();
    }

    // Показываем всё на экране
    void Show()
    {
        exprText.text = a + " " + op + " " + b;

        if (b != "") resultText.text = b;
        else if (a != "") resultText.text = a;
        else resultText.text = "0";
    }

    // Добавляем цифру или точку к числу
    string AddDigit(string str, string d)
    {
        if (d == ".")
        {
            if (str.Contains(".")) return str;  // вторую точку не ставим
            if (str == "") return "0.";
        }
        if (str == "0" && d != ".") return d;   // убираем лишний ноль
        return str + d;
    }

    // Кнопки 0-9 и "."
    public void PressNumber(string d)
    {
        if (done)
        {
            a = "";
            done = false;
        }

        if (op == "") a = AddDigit(a, d);
        else b = AddDigit(b, d);

        Show();
    }

    // Кнопки + - * / ^ %
    public void PressOp(string o)
    {
        if (a == "") return;
        if (b != "") Calculate();  // если уже есть два числа, сначала считаем
        op = o;
        done = false;
        Show();
    }

    // Кнопка "="
    public void Calculate()
    {
        if (a == "" || op == "" || b == "") return;

        double x = double.Parse(a, System.Globalization.CultureInfo.InvariantCulture);
        double y = double.Parse(b, System.Globalization.CultureInfo.InvariantCulture);
        double r = 0;

        if (op == "+") r = x + y;
        if (op == "-") r = x - y;
        if (op == "*") r = x * y;
        if (op == "^") r = System.Math.Pow(x, y);
        if (op == "%") r = x % y;
        if (op == "/")
        {
            if (y == 0)
            {
                ClearAll();
                resultText.text = "Деление на 0";
                return;
            }
            r = x / y;
        }

        exprText.text = a + " " + op + " " + b + " =";
        a = System.Math.Round(r, 10).ToString(System.Globalization.CultureInfo.InvariantCulture);
        op = "";
        b = "";
        done = true;
        resultText.text = a;
    }

    // Кнопка "C"
    public void ClearAll()
    {
        a = "";
        op = "";
        b = "";
        done = false;
        Show();
    }
}