■ Java Numbers - rint() 함수 



rint() 함수는 인자값에 가장 가까운 정수를 double 형으로 리턴 하는 함수 입니다. 



Syntax

public static double rint(double d)


※인자 값으로 double 을 받습니다. 



Sample


1
2
double a = 9.8;
System.out.println("Math.rint(a) = " + Math.rint(a));
cs

9.8 의 가장 가까운 정수 값은 10입니다. 

위 코드를 실행 하면 아래과 같은 결과가 리턴 됩니다. 

Math.rint(a) = 10.0



1
2
double b = 10.2;
System.out.println("Math.rint(b) = " + Math.rint(b));
cs

10.2 의 가장 가까운 정수 값은 10 입니다. 

위 코드를 실행 하면 아래와 같은 결과가 리턴 됩니다. 

Math.rint(b) = 10.0



1
2
double c = 10.6;
System.out.println("Math.rint(c) = " + Math.rint(c));
cs

10.6 의 가장 가까운 정수 값은 11입니다. 

코드를 실행하면 아래과 같은 결과가 리턴 됩니다. 

Math.rint(c) = 11.0



1
2
double d = 10.5;
System.out.println("Math.rint(d) = " + Math.rint(d));
cs

10.5 의 가장 가까운 정수 값은 뭘까요? 

6 이상을 반올림 하는 것으로 처리 하여 .5 의 경우 내림 처리 합니다. 

코드를 실행하면 아래과 같은 결과가 리턴 됩니다. 

Math.rint(d) = 10.0




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



■ Java Numbers - floor() 함수


floor() 함수는 앞서 언급했던 ceil() 함수와 반대로 입력된 값 인자 값보다 작거나 같은 가장 큰 정수 값을 double 형으로 반환 합니다. 



Syntax

static double floor(double d)

static double floor(float f)



Sample

1
2
3
4
5
6
7
8
double d1 = -10.675;
System.out.println(Math.floor(d1));
        
double d2 = -9.675;
System.out.println(Math.floor(d2));
        
double d3 = 10.675;
System.out.println(Math.floor(d3));
cs



d1 = -10.675

-10.675 보다 작거나 같은 정수 값은 -11 입니다. 

-11을 double 형으로 변환하면 -11.0 입니다. 


d2 = -9.675 

-9.675 보다 작거나 같은 정수 값은 -10 입니다. 

-10을 double 형으로 변환하면 -10.0 으로 표현 할 수 있습니다. 


d3 = 10.675

10.675 보다 작거나 같은 정수 값은 10 입니다. 

10을 double 형으로 변환하며 10.0 입니다. 


위 코드를 실행 하면 아래와 같은 결과 값을 리턴 합니다. 


-11.0

-10.0

10.0


floor() 함수는 자주 사용하는 함수 입니다. 

꼭 기억 해두셨다가 사용하시길 바랍니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



 ■ Java Numbers - ceil() 함수


ceil() 함수는 입력 인자 값보다 크거나 같은 가장 작은 정수 값을 double 형으로 반환 합니다. 



Syntax

static double ceil(double d)

static double ceil(float f)



Sample

1
2
3
4
5
6
7
8
double d1 = -10.675;
System.out.println(Math.ceil(d1));
        
double d2 = -9.675;
System.out.println(Math.ceil(d2));
        
double d3 = 10.675;
System.out.println(Math.ceil(d3));
cs


d1 = -10.675 입니다.

-10.675 보다 크거나 같은 정수 값이 뭘까요? -10 입니다. 

-10을 double 형으로 변환하면 -10.0 으로 표현 할 수 있습니다. 


d2 = -9.675 입니다. 

-9.675 보다 크거나 같은 정수 값은 -9 입니다. 

-9 를 double  형으로 변환하면 -9.0 으로 표현 할 수 있습니다. 


d3 = 10.675 입니다. 

10.675 보다 크거나 같은 정수 값은 11이죠 ^^

이를 역시 double  형으로 변환하면 11.0 입니다. 



위 코드를 실행 한 결과 값은 아래와 같습니다. 


-10.0

-9.0

11.0



입력받은 double 또는 float 값보다 크거나 같은 정수값을 다시 double 형으로 반환 하는 ceil() 함수...

잘 이용하시길 바랍니다 ^^



 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



 ■ Java Numbers - Math.abs() 함수


abs() 함수는 인자값에 대한 절대값을 반환하는 함수 입니다. 인자값의 타입으로는 int, float, long, double 등 primitive data type 입력이 가능합니다. 

Math 클래스의 함수중 하나로 static 함수 입니다. 



Syntax

static double abs( double d )

static float abs( float f )

static int abs( int i )

static long abs( long l )



Sample

1
2
3
4
5
6
7
8
int intValue = -1004;
System.out.println(Math.abs(intValue));
 
double doubleValue = -3.14;
System.out.println(Math.abs(doubleValue));
 
float floatValue = -15;
System.out.println(Math.abs(floatValue));
cs


음수 값들을 절대값으로 반환하면 당연히 전부 양수로 변경 되겠죠? ^^


위 코드를 실행 결과 값은 아래와 같습니다. 


1004

3.14

15.0


int 형을 입력 하면 int 형이 리턴됩니다. 

마찬가지로 double 형을 입력 하며 double 형이 리턴 되죠.


입력된 데이터 타입이 그대로 리턴되는 함수 입니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



 ■ Java 에서 Integer.toString() 함수를 써야 하는 이유 


안녕하세요. 제임스입니다. 


바로 이전 포스팅에서 Integer.toString() 함수에 대해 간략히 정리 했는데요. 

이번에는 실제 코딩 시 Integer.toString() 함수를 써야 하는 이유에 대해 언급하고자 합니다. 


우선 아래 코드를 보시겠습니다. 

1
2
3
Integer val = 12;
System.out.println("val1 = "+val);
System.out.println("val2 = "+val.toString());
cs


위 코드를 실행 시 결과 값은 아래와 같습니다. 


val1 = 12

val2 = 12


Integer 값을 바로 프린트 해도 결과 값은 동일하게 나옵니다. 

그렇다면 굳이 길게 쓸 필요 없지 않을까요? 라는 생각을 하시는 분들이 있을 수 있습니다. 


물론 보통의 경우 위와 같이 코드들 작성한다고 크게 문제가 되지는 않습니다. 



하지만 안전한 코딩을 하는 연습을 하기 위해 위와 같이 toString() 함수를 사용하시는 것을 권장 드립니다. 


아래 코드를 보시겠습니다. 

1
2
3
4
5
6
7
8
9
10
11
int intVal = 5;
sampleCode(intVal);
sampleCode2(intVal);
 
private static void sampleCode(int intVal) {
     System.out.println("number" + '=' + intVal);
}
    
private static void sampleCode2(int intVal) {
     System.out.println(intVal + '=' + "number");
}
cs


5라는 int 값을 아래와 같이 두가지 방법으로 표기 해봅니다. 


첫번째 ---> "number" + '=' + 5

두번째 ---> 5 + '=' + "number"


예상되는 결과 값은 아래와 같습니다. 


number=5

5=number


하지만 실제로 프로그램을 실행 해봤을때 결과 값은 예상과 다릅니다. 


number=5

66number


왜 이렇게 나올까요? 

숫자 + 부호의 식이 만들어 질 경우 부호를 유니코드 값으로 변환하여 처리 하는 경우가 생깁니다. (위 예제와 같은 경우) 유니코드 상에서 = 기호 값이 61 입니다. 

즉, 5+61 한 결과 값이 66이므로 66number 라는 생각지도 못한 결과 값을 리턴하게 됩니다. 


그렇기 때문에 sampleCode2 함수의 코는 아래와 같이 toString() 함수를 이용하여 변경하는 것이 좋습니다. 

1
System.out.println(Integer.toString(intVal) + '=' + "number");
cs



아래 샘플 코드는 StackOverflow 에서 발췌한 샘플 코드 인데요.

URL 정보를 미처 확보하지 못해 링크는 못걸었습니다. 

1
2
3
4
display(2'+'35);
public static void display(int num1, char operator, int num2, int result) {
    System.out.println(num1 + operator + num2 + '=' + result);
}
cs


위 코드를 실행 시키면 아래와 같은 결과 값이 나옵니다. 


114


2 + 43 (+ 의 유니코드 값)  + 3 + 61 (= 의 유니코드 값) + 5 을 계산한 결과 값이 114 입니다. 


위 코드를 안전한게 toString() 함수를 이용하여 작성해 보겠습니다. 

1
2
3
4
displaySafe(2'+'35);
public static void displaySafe(int num1, char operator, int num2, int result) {
    System.out.println(Integer.toString(num1) + operator + Integer.toString(num2) + "=" + result);
}
cs


결과 값은 아래와 같습니다. 


2+3=5


이제서야 원했던 결과 값이 제대로 나온것 같습니다. ^^



왜 toString 함수를 쓰는 것이 좋은 습관인지 아시겠죠? 물론 대부분의 경우 위와 같은 케이스를 경험하기는 힘듭니다. 하지만 평상시에 연습하지 않으면 당연하다는 생각에 코드 상에서 오류가 발생해도 쉽사리 찾기 어렵습니다. 경험담입니다 ㅠㅠ


좋은 코딩 습관을 기르는 연습이 왜 필요한지 한번 생각해 보는 것도 좋겠죠? ^^




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



  Java Numbers - toString() 함수 



toString() 함수는 Number 객체의 값을 String 객체로 변환하는 함수 입니다. 

만약 인자값이 primitive data type 일 경우 primitive data type 의 String 객체가 리턴 됩니다. 



Syntax

String toString()

- 해당 Integer 값을 String 객체로 표기 합니다. 


static String toString(int i)

- 전달 받은 인자(i) 를 String 객체로 표기 합니다. 



Sample

1
2
3
Integer x = 7;
System.out.println("x.toString() >>> "+x.toString());
System.out.println("Integer.toString(x) >>> "+Integer.toString(x));
cs


Integer x 값을 toString() 또는 toString(x) 한 값은 동일한 결과를 리턴합니다. 


x.toString() >>> 7

Integer.toString(x) >>> 7



한가지 주의 할 점은 아래와 같은 경우가 있습니다. 

1
2
int y = 5;
System.out.println("y.toString() >>> "+y.toString());
cs


Integer 값이 아닌 int 값 (primitive data type) 을 toString() 하려는 경우 아래와 같은 오류가 발생 합니다. 

Cannot invoke toString() on the primitive type int


primitive data type 인 int에 toString() 함수를 사용할 수 없다는 내용입니다. 


int 와 Integer 가 엄연히 다르다는 것 꼭 기억하시길 바랍니다. 





 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



안녕하세요. 제임스 입니다. 


최근에 자바 Number 관련 함수 중 valueOf 와 parseInt 에 대해 정리 했는데요. 

이 두 함수의 차이점은 무엇일까요? 


parseInt 함수에 대한 내용은 아래 링크 참조하세요.

2018/03/06 - [Java] - [ 자바 코딩 ] Java Integer.parseInt


valueOf 함수에 대한 내용은 아래 링크 참조하세요.

2018/03/26 - [Java] - [ 자바 코딩 ] Java Number - valueOf() 함수




Integer.parseInt() vs Integer.valueOf() 두 함수의 차이점은 무엇일까요? 


결정적인 차이점은 parseInt 함수는 int 형의 primitive data type 을 리턴하는 반면 valueOf 함수는 Integer 객체로 반환한다는 점입니다. 


1
2
int x = Integer.parseInt("5");
Integer y = Integer.valueOf("7");
cs


위 코드는 각각 int 값 5 와 Integer 값 7 을 리턴합니다. 



또 다른 한가지는 차이점이라 이야기 하긴 어렵긴 한데요...

사실 valueOf 함수가 내부적으로 parseInt 함수를 사용하고 있습니다. 

아래는 Integer.class 소스 내용 중 관련 부분 발췌했습니다. 


public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s, 10);
}

public static Integer valueOf(String s, int radix) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, radix));
}

public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}


valueOf 함수 결과 값을 리턴 할때 이미 내부적으로 parseInt 한 값을 Integer 형으로 리턴하고 있는 것을 보실 수 있습니다. 



두 함수의 차이점 이해 하셨나요? 

비슷하지만 다른 두 함수의 리턴 값, 잘 알아 두시면 좋을 거예요. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



안녕하세요. 제임스 입니다. 


이번 포스팅에는 Java Number 관련 함수 중 valueOf() 함수에 대해 정리해 보겠습니다. 


valueOf() 함수는 입력받은 인자 값을 지정된 Number 객체 형으로 변환하여 반환 합니다. 이 인자값은 primitive data type (원시 데이터 형 - byte, int, long, double, boolean 등 자바 키워드로 이미 지정된 데이터 형) 또는 문자열 등이 될 수 있습니다. 



Syntax

1. public static Integer valueOf( int i )

2. public static Integer valueOf( String s )

3. public static Integer valueOf( String s, int radix )


그외 Double, Float 등도 valueOf (primitiveType value) 또는 valueOf(String s) 함수를 가지고 있습니다. 

즉, 아래과 같은 syntax 들이 더 있습니다. 참고 하세요.

public static Double valueOf(double d)

public static Float valueOf(float f)


Parameters

첫번째, 두번째 입력 값은 각각 int 및 String 으로 단 하나의 입력 값을 가지고 있습니다. 

이와 다르게 세번째 함수는 String 값과 int 값을 동시에 순차적으로 입력을 받습니다. 입력된 String 형의 값을 두번째 인자값으로 입력된 진수에 맞춰서 변환 합니다. 

예를 들면 Integer.valueOf("100", 16) 이라는 코드가 있다면 100 을 16진수로 변환하여 Integer 형으로 반환 한다는 뜻입니다. 


Sample Code

1
2
3
4
5
6
7
8
9
Integer a =Integer.valueOf(7);
Double b = Double.valueOf(5);
Float c = Float.valueOf("38");               
Integer d = Integer.valueOf("100",16);
 
System.out.println("a = "+a); 
System.out.println("b = "+b);
System.out.println("c = "+c);
System.out.println("d = "+d);
cs



결과 값은 아래와 같습니다. 


a = 7

b = 5.0

c = 38.0

d = 256



입력 파라미터 값도 중요 하지만 어떤 형으로 반환 할 것인지 결정을 잘해야 겠죠? ^^




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



안녕하세요. 제임스 입니다. 


이번에는 Java Number 관련 함수 중 equals() 라는 함수에 대해 알아 보겠습니다. 



equals() 함수는 함수를 호출하는 Number 객체가 인자 값으로 전달 되는 객체와 같은지 여부를 판단하여 boolean  형으로 리턴 해줍니다.  



Syntax

public boolean equals( Object o )


Parameters

인자 값으로는 어떤 객체든 상관 없이 받을 수 있습니다. 


Return Value

▶ 인자값이 null 이 아니고, 비교 대상이 동일한 값이며 동일한 형일 경우 true

▶ 인자값이 null 이거나, 비교 대상이 다른 값일 경우 또는 형이 다른 경우 false

를 반환합니다. 


Sample Code

1
2
3
4
5
6
7
8
Integer x = 7;
Integer y = 20;
Integer z =7;
Short a = 7;
 
System.out.println(x.equals(y));  
System.out.println(x.equals(z)); 
System.out.println(x.equals(a));
cs


비교대상이 되는 x 값을 Integer 형의 7로 설정했습니다. 

그리고 동일한 Integer 형의 20 과 7을 비교 해봅니다. 


첫번째 7과 20은 동일한 형이지만 다른 값이므로 false 가 나올것으로 예상됩니다. 

두번째 7과 7은 동일한 형에 동일 값으로 true 가 리턴 될 것입니다. 

세번째 7과 7은 값은 같지만 Integer 와 Short 로 서로 다른 형이기에 결론적으로 다른 값으로 볼수 있습니다. 즉, false 가 리턴 될 것으로 예상 할 수 있습니다. 


결과 값은 어떻게 나올까요? 


아래와 같습니다. 


false

true

false



equals() 함수는 값만 보는 것이 아니라 데이타 타입 즉, 형도 같이 비교 대상입니다. 꼭, 기억해 두세요 ^^




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



안녕하세요. 제임스 입니다. 


최근 Java Number 관련 함수에 대해 계속해서 알아 보고 있습니다.

이번에는 compareTo() 라는 함수에 대해 이야기 해보겠습니다. 



compareTo() 함수는 함수를 호출한 Number 객체를 인자값과 비교를 합니다.

Byte, Double, Integer, Float, Long 또는 Short 등을 비교 할 수 있습니다. 단, 서로 다른 형을 비교 할 수는 없으므로 함수를 호출하는 인수와 비교대상이 되는 Number 객체는 동일한 형이어야 합니다. 


예를 들면 Integer 는 Integer 형 인자값과 비교가 가능하지만, Long 형 인자 값을과는 비교가 불가능 합니다. 



Syntax


public int compareTo( NumberSubClass referenceName )



Parameters


referenceName 은 Byte, Double, Integer, Float, Long 또는 Short 등이 될수 있습니다. 



Return Value


▶ 비교 대상이 동일한 값일 경우 0

▶ 비교 대상이 작은 경우 -1

▶ 비교 대상이 큰 경우 1 

을 반환합니다. 



Sample Code


1
2
3
4
5
6
7
Integer x = 7;
          
System.out.println(x.compareTo(3));
        
System.out.println(x.compareTo(7));
        
System.out.println(x.compareTo(77));
cs


비교 대상은 Integer 형인 7 입니다. 


첫번째 7과 3의 비교인데요... 당연히 비교대상인 7이 인자값인 3보다 크죠. 

예상되는 결과 값은 1 입니다. 


두번째는 7과 7의 비교입니다. 당연히 동일한 값입니다.

예상 결과 값은 0 입니다. 


세번째 7과 77의 비교! 인자값 77보다 작습니다. 

예상 결과 값은 -1이 됩니다. 



결과는 어떨까요? 


1

0

-1


맞습니다. 예상대로 결과 값이 리턴 됩니다. 



이번에는 Double 형으로 테스트 해보겠습니다. 

1
2
3
4
5
6
7
Double y = 12.5;
        
System.out.println(y.compareTo(3.0));
        
System.out.println(y.compareTo(12.5));
        
System.out.println(y.compareTo(27.8));
cs


결과가 예상이 되시나요? 


1

0

-1


위와 같은 결과 값이 나옵니다. 

예상하신 값과 동일 한가요? ^^




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,