예제 #1
0
        /// <summary>
        /// 計算処理
        /// </summary>
        /// <param name="md">メインディスプレイTextBox</param>
        /// <param name="keyCode">演算キー</param>
        /// <returns>bool</returns>
        public bool CalcMain(TextBox md, CalcKeyCode keyCode)
        {
            //前回の計算結果を左辺にシフト
            Prop.MemNum = Prop.Result;
            //前回押下された演算キーをシフト
            Prop.CalcKeyMem2 = Prop.CalcKeyMem1;
            if (keyCode != CalcKeyCode.Equals)
            {
                //今回押下された演算キーを記憶 イコールは記憶しない
                Prop.CalcKeyMem1 = keyCode;
            }
            //演算キー連続押下はイコール以外は計算しない
            if (Prop.CalcPush == false || keyCode == CalcKeyCode.Equals)
            {
                //前回押下された演算キーで計算
                switch (Prop.CalcKeyMem2)
                {
                //加算
                case CalcKeyCode.Sum:
                    Prop.Result = Prop.MemNum + Prop.InputNum;
                    break;

                //減算
                case CalcKeyCode.Diff:
                    Prop.Result = Prop.MemNum - Prop.InputNum;
                    break;

                //乗算
                case CalcKeyCode.Pro:
                    Prop.Result = Prop.MemNum * Prop.InputNum;
                    break;

                //除算 0
                case CalcKeyCode.Quoti when Prop.MemNum != 0 && Prop.InputNum == 0:
                    //0で除算
                    md.Text = Msg.ZERO_JYOZAN;
                    Prop    = new CalcProperty();
                    return(false);

                //除算
                case CalcKeyCode.Quoti:
                    Prop.Result = Prop.MemNum / Prop.InputNum;
                    if (double.IsNaN(Prop.Result))
                    {
                        //演算結果が非数の場合0
                        md.Text = Msg.NaN_ERR;
                        Prop    = new CalcProperty();
                        return(false);
                    }
                    break;

                //前回押下演算キーなし
                case CalcKeyCode.None:
                    if (double.TryParse(md.Text, out var res))
                    {
                        Prop.Result = res;
                    }
                    break;
                }
            }
            //計算結果表示
            md.Text = Prop.Result.ToString();

            //演算キー押下フラグON
            Prop.CalcPush = true;
            return(true);
        }
예제 #2
0
 /// <summary>
 /// クリアキー
 /// </summary>
 /// <param name="md">メインディスプレイTextBox</param>
 public void Clear(TextBox md)
 {
     //全ての値を初期化
     Prop    = new CalcProperty();
     md.Text = "0";
 }