[C#]/[C# 윈폼] 혼자해보는 계산기 만들기(10)
-
[C#] 계산기 전체 코드
using System; using System.Data; using System.Diagnostics; using System.Runtime.Serialization; using System.Xml.Linq; namespace HelloCsharpwin { public enum Operators {None, Add, Sub, Multi, Div} public partial class Calculator : Form { public double Result = 0; public bool isNewNum = true; public Operators Opt = Operators.None; public Calculator() { InitializeComponent(); } //숫자 버튼 클릭 이벤트 priva..
2024.01.11 -
[C#] 제곱, 제곱근, 역수 수식 표시 & 계산기 정밀도 높이기(부동 소수점 계산 오류)
1. 역수, 제곱, 제곱근에 대한 수식 표시 기능을 만들었다. 1) 역수 처리 // 역수 처리 private void OneOverXBtn_Click(object sender, EventArgs e) { double num = double.Parse(NumScreen.Text); double inverse = 1.0 / num; NumScreen.Text = inverse.ToString("#,##0.#########"); if (!isNewNum) { string lastExpression = expressionScreen.Text.Substring(expressionScreen.Text.LastIndexOf(' ') + 1); if (lastExpression.Contains("1/(")) { exp..
2024.01.11 -
[C#] 소수점 처리 에러
소수점을 입력하고 숫자를 입력하는데 1~9는 쳐지지만 0은 안쳐지는 버그가 발생했다. 예를 들면 1. 10.2456, 2.9812 이렇게는 가능한데 2. 10.02나 10.2931081 소수점 아래 0을 입력 시 소수점이 사라져서 10이 되거나 10.293181처럼 소수점 아래 0이 누락되는 버그였다. 아무리 찾아봐도 안보이고 혹시 자료형 문제인가.. 싶어서 자료형도 찾아보고 했는데 해답을 얻지 못해서 곰곰히 생각해보니 문제점을 발견했다. 천의 자리 숫자를 위한 포맷에서 해답을 찾았다. //숫자 입력 처리 public void SetNum(string num) { System.Diagnostics.Debug.WriteLine(NumScreen); if (isNewNum) { NumScreen.Text =..
2024.01.10 -
[C#] 자릿수 표시 & 수식 표시 기능 추가
자릿 수 표시와 수식 표시 기능을 구현하고 싶었다. 1. 자릿 수 표시(천의 자리 ,) 1) string private void FormatNumber() { double parsedNumber; if (double.TryParse(NumScreen.Text, out parsedNumber)) //Screen에 표시된 string 값을 double로 변환하고, 이를 포맷해준다. { NumScreen.Text = parsedNumber.ToString("#,###"); } } //숫자 입력 처리 public void SetNum(string num) { System.Diagnostics.Debug.WriteLine(isNewNum); if (isNewNum) { NumScreen.Text = num; is..
2024.01.09 -
[C#] KeyEvent
마우스로는 계산기가 잘돌아가서 키보드로 해보려니까 생각보다 까다로웠다. 기능이 10개가 있으면 2~3개가 제대로 안돌아가서 수정하느라 고생을 좀 했다. KeyEvent에 대해 알아보자 키와 이벤트 키보드 동작 : 눌림과 놓임 키 구분 : 문자키(A~Z, a~z, 0~9, Space bar, + 등), 기능키(F1~F12, Ctrl...등) 키 이벤트 키 관련 메세지 : WM-CHAR.WM_KEYDOWN, WM_KEYUP 키 관련 이벤트 : KeyDown, KeyUp, KeyPress 키 눌림 이벤트 : KeyDown 문자키 눌림 이벤트(대소문자 구분) : KeyPress 메시지박스 활용 : 각종 값 또는 이벤트를 확인하기 위해 사용, MessageBox.Show("문자열"); 키 눌림과 문자키 입력 확인..
2024.01.08 -
[C#] 윈도우폼 계산기 만들기(~ing)
1. UI 완성 더 이쁘게 할 수 있으면 수정할 계획이다. 2. 로직 구현 현재 2일동안 초기화(C), 숫자 지우기, 사칙연산, 등호, 역수, 음/양수 전환, 제곱, 제곱근 소수점, CE, % 기능까지 완료했다. 내일은 수식 표시 기능과 자릿수(구현했었는데 예외처리땜에 다시 해야된다.) , 예외처리 안된 것 있으면 꼼꼼하게 살펴볼 계획이다. 다 완성되면 로직 공유 하겠습니다! 3. 마우스로 입력하는 부분은 완성해서 공유! using System.Xml.Linq; namespace HelloCsharpwin { /*enum = 열거형 데이터 타입 -> 선언을 하고 사용할 수 있다. public enum Season {Spring, Summer, Fall, Winter}; Season currentSeaso..
2024.01.05