자바 숫자 자릿수 - jaba susja jalis-su

반응형

JAVA 에서 String 형의 경우 아래와 같이 자릿수를 구할수 있다.




String a = "abced";


System.out.println("길이>>"+a.length);




위와 같은 코드에서는 아래의 결과가 나올것이다.




길이>>5






String 형의 경우 length 함수를 지원하지만, int 형의경우는 길이 함수가 없다. 이럴경우에는 수학적 함수를 사용하여야 한다.




int a = 1571;


int length = (int)(Math.log10(a)+1);


System.out.println("길이>>"+a);




결과는 아래와 같이 나올 것이다.




길이>>4


반응형

공유하기

게시글 관리

구독하기자기 개발하기

'프로그램 관련 > Java 및 JAVA라이브러리' 카테고리의 다른 글

spring 맵핑 문제날시  (0)2020.09.15java 엑셀파일 다운 코딩  (0)2019.08.09Java split 쓰기 문자열 자르기 . 기준 자르기  (0)2018.09.28Table 구조 배열 가로 형식 출력(피벗) 알고리즘  (0)2018.09.20JAVA 배열 내에 중복값 제거하기/출력하기  (0)2018.09.18

211300291는 몇 자리 수 일까?

 

백준 알고리즘 2577번:숫자의 개수

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.

www.acmicpc.net

문제를 풀다 보니 연산 결과의 자리 수를 알아야하는 문제가 나왔는데 이런 비슷한 경우에 사용하면 좋을것 같아서 공유하고자 한다.

 

숫자의 자리수를 확인할 때는 2가지 방법이 존재한다.

 

  1. int 형 변수를 문자열로 변환하고 해당 문자열의 길이를 구하는 방법
  2. Math 라이브러리를 이용해서 자리수를 구하는 방법

사실 대부분의 경우에는 1번 방법이 훨씬 가독성이 좋고 편하지만, 특정 상황에서도 언젠간 필요할 수 있는 Math 라이브러리를 이용한 방법도 함께 알아두는 것이 좋다.

 

int 형 변수를 문자열로 변환하고 해당 문자열의 길이를 구하는 방법

설명 그대로 문자열로 변환하고 해당 문자열의 길이를 이용한다.

public class Main {
    public static void main(String[] args) {
    
        int sum = 123331;

        int length = String.valueOf(sum).length();

        System.out.println(length);
        
    }
}

// 결과 : 6

Math 라이브러리를 이용해서 자리수를 구하는 방법

java.lang 패키지 아래에 있는 Math 클래스의 log 메서드를 사용한다.

 

상용 log의 성질을 이용하는데, 밑이 10인 로그는 진수의 자리수를 파악하는데 도움이 된다.

public class Main {
    public static void main(String[] args) {
    
        int sum = 123331;

        int length = (int)(Math.log10(result) + 1);

        System.out.println(length);
        
    }
}

// 결과 : 6

 

공유하기

게시글 관리

구독하기Wonit

저작자표시 동일조건

  • 카카오스토리
  • 트위터
  • 페이스북

'💾 Algorithm > --- 문제 풀이 스킬' 카테고리의 다른 글

[알고리즘 문제풀이 스킬] 여러 백준 문제 비교하며 배워보는 다양한 자바 입출력 기법  (0)2021.07.29[알고리즘 문제 풀이 스킬] 알고리즘에서 아스키 코드표 이용하기  (0)2021.03.27[알고리즘 문제 풀이 스킬] 자바 int 형 숫자 자리수 출력하기  (0)2021.02.07[알고리즘 문제 풀이 스킬] 자바로 알고리즘에서 자주 사용되는 배열 shift 구현하기  (0)2021.01.13[알고리즘 문제 풀이 스킬] 자바 에서 Comparator, Comparable 로 정렬 기준 바꾸기 (람다를 이용해서 깔끔하게 재정의하기)  (1)2020.02.24

반응형

MySQL에는 ZeroFill 이라는 옵션이 있다. ZeroFill에 대해 아주 간단하게 설명하면 숫자로 이루어진 값이 있을때 특정 자릿수만큼 값을 0으로 채우는 것이다.


즉 int(8)로 정의된 "3"이라는 숫자가 있다면 실제 값은 "00000003" 으로 저장하는 것이다.



Java에서는 아쉽게도(?) ZeroFill 옵션이 없다. 그래서 종종 자릿수를 맞춰야 하는 경우가 발생을 하면 해당 숫자를 체크하여 앞에 0을 붙여주기도 한다. 예를들면 2자릿수를 맞춰야 한다고 하면 값을 체크하여 10 이하여 숫자 앞에다가 0을 붙이는 식이다.

위와 같은 방식은 사실 비효율적이다. 체크하고자 하는 자릿수가 많은경우 더 많은 계산을 필요로 하므로 효율적이라고 보기에는 힘들다. 이런 경우라면 Java에 기본적으로 포함되어 있는 String.format을 이용하자.


public class ZeroFillTest {
	
	
	public static void main(String[] args) {
		
		System.out.println(String.format("%02d", 8));
		System.out.println(String.format("%02d", 11));
		
	}
}



위의 코드에서 %02d 에 설명하면 다음과 같다.
% : 명령 시작을 의미
0 : 채워질 문자
2 : 총 자리수
d : 십진수로 된 정수

%02d : 십진수로 된 2자리의 정수 형식으로 나타냄. 단 자릿수가 부족할 경우 0으로 해당부분을 채움


이 밖에도 String.format을 이용하면 다양한 방법으로 문자를 표현할 수 있다.
시간날때 다음 URL을 참고하면 많은 도움이 된다. - http://examples.javacodegeeks.com/core-java/lang/string/java-string-format-example/

반응형

공유하기

게시글 관리

구독하기과일가게 개발자

저작자표시

'Language > Java / JSP' 카테고리의 다른 글

[Java] 경위도 좌표 거리계산 (두 지점간의 거리)  (11)2016.03.03[JSP] 로그인 세션 유지시간 늘리기  (0)2015.06.15[JSP] 서버 물리 경로 구하기  (0)2015.03.10[Java] bad major version at offset=6  (0)2015.02.02[JSP] Form 작성시 자동 Submit 막기  (0)2015.01.13