Example #1
0
 /// <summary>
 /// 桁下げ処理
 /// </summary>
 /// <param name="str">桁下げしたい文字列</param>
 /// <param name="isDot">小数点フラグ</param>
 /// <returns>桁下げした文字列</returns>
 public static String DownDigit(String str, ref Boolean isDot)
 {
     // 小数点があるかどうかを調べる
     if (isDot == true)
     {   // 小数点が一番右端にあるかどうかを判定
         if (MyDetection.IsEndToDot(str) == true)
         {
             // 一番右端の場合は小数点フラグOFF
             // (小数点フラグだけが消える 表示は変わらない)
             isDot = false;
         }
         else
         {
             // 一番右端ではない場合は桁下げ
             str = str.Remove(str.Length - 1);
         }
     }
     else
     {   // 表示用文字列が 0.ではないかどうか(0.の場合は何もしない)
         if (MyDetection.IsCalcFormat(str) == false)
         {
             // 一桁かどうか
             if (str.Length - 1 == 1)
             {
                 str = Common.CALC_FORMAT;   // 一桁の場合は 0.に表示を変える
             }
             else
             {
                 str = str.Remove(str.Length - 2, 1);    // それ以外は桁下げ
             }
         }
     }
     return(str);
 }
Example #2
0
        /// <summary>
        /// 桁上げ
        /// </summary>
        /// <param name="str">桁上げしたい文字列</param>
        /// <param name="upVal">桁上げする数字</param>
        /// <param name="beforInput">前回入力された内容</param>
        /// <param name="isDot">小数点フラグ</param>
        /// <returns>桁上げした文字列</returns>
        public static String UpDigit(String str, String upVal, ref char beforInput, Boolean isDot)
        {
            String work = str;  // 今表示されている文字列をワークに格納

            // 前回の入力が演算子かどうか
            if (MyDetection.IsValue(beforInput) == false && beforInput != '\0')
            {   // 小数点フラグがONか
                if (isDot == true)
                {
                    work += upVal;          // ワークに追加したい数字を追加
                }
                else
                {
                    work  = String.Empty;   // ワークを初期化
                    work += upVal + '.';    // 今回の内容を保存
                }
            }
            else
            {
                // 桁数チェック(桁数を超えていたら何もしない)
                if (work.Length != Common.DIGIT_MAX)
                {   // 小数点フラグのチェック
                    if (isDot == true)
                    {
                        // 小数点がついている場合はそのまま追加
                        work += upVal;
                    }
                    else
                    {
                        // 表示している文字列が 0. の場合は押された数字.を表示
                        if (MyDetection.IsCalcFormat(work) == true)
                        {
                            work = upVal + '.';
                        }

                        else
                        {
                            // 小数点もついておらず表示している文字列も 0. じゃない場合は桁上げ処理を行う
                            work = work.Insert(work.Length - 1, upVal);  // .を考慮している
                        }
                    }
                }
            }
            beforInput = Char.Parse(upVal);
            return(work);
        }
        // MemoryStoreボタン
        private void memoryStoreBtn_Click(object sender, EventArgs e)
        {
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // 少数桁以下の無駄な0を削除
                display = CalcManager.DotAdjust(display);

                // 表示用文字列が0だけではなかったら
                if (MyDetection.IsCalcFormat(display) == false)
                {
                    memory = decimal.Parse(display);

                    // ラベルにテキスト描画
                    if (memoryLabel.Text == "")
                    {
                        memoryLabel.Text = "M";
                    }
                }

                resultTxt.Text = display;
            }
        }