알고리즘 문제를 푸는데, 숫자의 모든 자리의 수를 더하는 문제가 나왔다.

 

while(number > 0){
        sum+=number%10;
        number/=10;
    }

 

C++을 생각하고 이렇게 작성했는데, 문제가 발생했다.

 

C++은 자료형이 아예 정수형과 실수형이 나뉘어져있는데,

 

javascript는 둘의 구분이 없이 Number라는 자료형으로 통일되어 있어서, C++과 다르게 나누기를 하다보면,

정수에서 실수로 바뀌어서, 정확히 말하면 소수점이 발생하여 문제가 발생했다.

 

따라서 이 문제를 해결하기 위해서는 계산할 때, 소숫점을 버리면 문제가 해결되었다.

 

그 방법은

 

숫자를 var number = 1.6 이라고 하면

 

올림

Math.ceil(number)

= 2

 

내림

Math.floor(number)

= 1

 

반올림

Math.floor(number)

= 2

반응형

+ Recent posts