유튜버 코딩발전소님의 안드로이드 계산기 만들기를 따라하다가
약간 미완성상태로 강의가 끝났다.
계산기의 소수점문제를 고쳐보자.
우선 계산 결과값이
1.000000
5314.000000
3.1400000
이렇게 나왔다.
그리하여 직접 해결한 코드다.
public void replaceNum(double result){
if(isNumeric(result)){
strResultNumber = String.valueOf((int)result);
}else {
strResultNumber = String.valueOf((Math.round(result*10000)/10000.0));
}
}
public boolean isNumeric(double result){
return Math.ceil(result) == Math.floor(result);
}
기존 result 변수는 double형으로 계산하기때문에 인자 값은 double형으로 받아온다.
우선 isNumeric()으로 result가 정수인지 확인한다.
ceil(올림)과 floor(버림)의 예시는 다음과 같다.
Math.ceil(12.9) = 13; Math.floor(12.9) = 12;
12.9는 정수가 아니다.
Math.ceil(12.0) = 12; Math.floor(12.0) =12;
12.0은 정수다.
replaceNum()은 isNumeric()이 true라면 바로int로 형변환을 해준다.
isNumeric()이 false라면 소수점 넷째자리까지만 보여주고 round로 반올림한다.
둘째자리까지 보여주고싶다면 Math.round(result*100)/100.0)하면 된다.
더 좋은코드가 있다면 가르쳐 주십쇼 선배님들ㅎㅎ