본문 바로가기
Projects/Calculator for IOS(SWIFT)

ios 계산기 만들기 v0.1

by Answer Choi 2016. 1. 22.
반응형

IOS용 계산기


처음 아주 간단할꺼라고 생각하고 만들게 되었는데 생각만큼 만만치는 않네요;;


일단 첫번째 버전은 아주 아주 간단한 계산기



만드는데 참고한 계산기는 바로 맥에있는 기본 계산기!!



이건 현재 만들어진 계산기


현재 문제점은 소수점 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 : 소수점이 있으므로 그대로 나타내 줍니다.


실행모습








반응형

인기글