반응형
처음 아주 간단할꺼라고 생각하고 만들게 되었는데 생각만큼 만만치는 않네요;;
일단 첫번째 버전은 아주 아주 간단한 계산기
만드는데 참고한 계산기는 바로 맥에있는 기본 계산기!!
이건 현재 만들어진 계산기
현재 문제점은 소수점 2자리아래로는 잘 안된다는거,,,
계산결과는 잘나오지만 입력하는 부분이 잘 안됩니다.
이건 계속해서 봐야하는 부분이고
버튼이 많다보니 이벤트 등록하는게 거의 노가다 수준이었습니다.
1 2 3 4 5 6 7 | @IBAction func btn0(sender: AnyObject) { if sym==0 { chkpointnum(old_num,num2: 0) }else{ chkpointnum(new_num,num2: 0) } } | cs |
이 코드가 각 버튼에 대한 이벤트 처리코드들입니다.
sym은 symbol의 약자를 변수로 사용한건데 연산자가 입력되었는지를 확인하여
연산자 입력 전이면 old_num으로 연산자 입력 후면 new_num으로 처리합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | func chkpointnum(num:Float,num2:Int) { let orign=num let input=num2 var new=orign%1 var pointnum:Float=0.1 if(point==use){ //decimal if(new>0){ //still under 0 repeat{ new*=10 print("cur1 point is : "+String(new)) print(Int(round(new))) print(Float(Int(new))) new%=1 print("cur2 point is : "+String(new)) pointnum/=10 print("curcal point is : "+String(pointnum)) }while new>0 } print("cal point is : "+String(pointnum)) if sym==0 { old_num=orign+(pointnum*Float(input)) }else{ new_num=orign+(pointnum*Float(input)) } }else{ //not point if sym==0 { old_num=(orign*10)+Float(input) }else{ new_num=(orign*10)+Float(input) } } if sym==0{ display(old_num) }else{ display(new_num) } } | cs |
이부분은 소수점이 있는지를 확인하여 계산해 주는 부분입니다.
만약 소수점이 있다면 Line 8~29 가 실행됩니다.
Line 10~20 : 소수점 아래의 숫자가 존재하면 10씩 곱해주고 나머지를 구하는식으로 0이 될때까지
연산하여 소수점 몇째자리까지 있는지를 계산합니다.
Line 24~28 : 새로운 소수점아래의 숫자를 더해줍니다.
Line 29~35 : 소수점아래가 없는 정수이므로 바로 더해줍니다.
Line 36~40 : Text로 나타내줍니다.
1 2 3 4 5 6 7 8 9 | func display(result:Float){ if((result%1)==0){ let textResult=String(result) let end=textResult.endIndex.advancedBy(-2) statusDisplay.text=textResult.substringToIndex(end) }else{ statusDisplay.text=String(result) } } | cs |
이 부분이 실제 텍스트(Label view)로 나타내 주는 부분입니다.
Line 2~5 : 소수점이 없으면 정수만 나타내 줍니다.
Line 6~8 : 소수점이 있으므로 그대로 나타내 줍니다.
실행모습
반응형