/// <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); }
/// <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; } }