728x90
https://m.post.naver.com/viewer/postView.naver?volumeNo=31984375&memberNo=6255089
위 네이버 포스팅을 참고해서 계산기 폼을 만들었다.
2탄까지 따라 만들어서 간단한 계산이 되는 계산기를 완성하기는 했는데
. (point) 코드가 올라와있지 않아서 소수점 계산이 불가능했다.
그래서 int형으로 선언된 변수들과 int형으로 형변환을 해주는 Int32를 double로 형변환 할 수 있도록 double.Parse(strNum); 으로 수정하니 소수점 계산이 가능했다.
- 변수명은.. 귀찮아서 int가 붙은 그대로 뒀다..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Calculator
{
public partial class Form1 : Form
{
enum Operators
{
None,
Add,
Subtract,
Multiply,
Divide,
Result
}
Operators currentOpperator = Operators.None;
Boolean operatorChangeFlag = false;
double firstOperand = 0;
double secondOperand = 0;
public Form1()
{
InitializeComponent();
}
private void label2_Click(object sender, EventArgs e)
{
}
private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
}
private void display_Click(object sender, EventArgs e)
{
}
private void ButtonResult_Click(object sender, EventArgs e)
{
secondOperand = double.Parse(display.Text);
if(currentOpperator == Operators.Add)
{
firstOperand += secondOperand;
display.Text = firstOperand.ToString();
} else if (currentOpperator == Operators.Subtract)
{
firstOperand -= secondOperand;
display.Text = firstOperand.ToString();
}else if (currentOpperator == Operators.Multiply)
{
firstOperand *= secondOperand;
display.Text = firstOperand.ToString();
}else if (currentOpperator == Operators.Divide)
{
if(secondOperand == 0)
{
display.Text = "0으로 나눌 수 없습니다.";
}else
{
firstOperand /= secondOperand;
display.Text = firstOperand.ToString();
}
}
}
private void ButtonServen_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "7";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonEighth_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "8";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonNine_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "9";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonDivide_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
firstOperand = double.Parse(display.Text);
currentOpperator = Operators.Divide;
operatorChangeFlag = true;
}
private void ButtonFour_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "4";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonFive_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "5";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonSix_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "6";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonMultiply_Click(object sender, EventArgs e)
{
firstOperand = double.Parse(display.Text);
currentOpperator = Operators.Multiply;
operatorChangeFlag = true;
}
private void ButtonOne_Click(object sender, EventArgs e)
{
if(operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "1";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonTwo_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "2";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonThree_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "3";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonSubtract_Click(object sender, EventArgs e)
{
firstOperand = double.Parse(display.Text);
currentOpperator = Operators.Subtract;
operatorChangeFlag = true;
}
private void BuuttonAllClear_Click(object sender, EventArgs e)
{
firstOperand = 0;
secondOperand = 0;
currentOpperator = Operators.None;
display.Text = "0";
}
private void ButtonZero_Click(object sender, EventArgs e)
{
if (operatorChangeFlag == true)
{
display.Text = "";
operatorChangeFlag = false;
}
string strNumber = display.Text += "0";
double intNumber = double.Parse(strNumber);
display.Text = intNumber.ToString();
}
private void ButtonPoint_Click(object sender, EventArgs e)
{
string strNumber = display.Text += ".";
double intNumber = double.Parse(strNumber);
display.Text = strNumber.ToString();
}
private void ButtonAdd_Click(object sender, EventArgs e)
{
firstOperand = double.Parse(display.Text);
currentOpperator = Operators.Add;
operatorChangeFlag = true;
}
}
}
문제는 0.0을 입력하거나 2.0과 같이 소수점 첫 번째 자리가 0이 오는 숫자가 입력이 안 된다.
이 부분 수정해서 다시 포스팅할 생각이다.
728x90
'C# > C# 프로그래밍' 카테고리의 다른 글
[C#프로그래밍] [WPF] PC 카카오톡 만들기 #02 - 의존성 주입 (0) | 2023.08.10 |
---|---|
[C#프로그래밍] [WPF] PC 카카오톡 만들기 #01 - 프로젝트 생성 및 NuGet 패키지 다운 (0) | 2023.08.10 |
[C#프로그래밍] 계산기만들기 #02 (0) | 2023.08.09 |
[C#프로그래밍] 숫자 맞추기 게임 (0) | 2023.08.09 |
[C#프로그래밍] 로그인 창 (0) | 2023.08.09 |