2012-10-12 6 views
-6

두 개의 정수 값을 갖고 있는데 그 두 값의 차를 java에서 길게 반환하고 싶습니다.Java에서 int 값을 long 값으로 변환하는 방법은 무엇입니까?

가능합니까?

+12

제목과 질문이 서로 모순됩니다. –

+0

길게 반환되는 메서드에서 int를 자유롭게 반환 할 수 있습니다. 왜 그냥 해보지 그래? 가장 확실한 것이 실패하면 실패한 코드를 게시하십시오. –

+0

귀하의 질문 제목은 설명과 모순됩니다. 설명이 맞으면 @juergen d의 답을 확인하십시오. 다른 것이 필요한 경우 질문을 올바르게 편집하십시오. – peshkira

답변

10

당신은 긴에 결과를 할당 할 수 있습니다 : 당신이 큰 정수가있는 경우, 당신은 모두 Integer.longValue()를 사용하고 단순히 그 값을 뺄 수

long result = intval2 - intval1; 
+0

죄송합니다. 작동하지 않습니다. –

+0

왜 - 어떤 오류가 발생하고 있습니까? –

+5

'그게 작동하지 않는다. '그게 우리에게 아무 말도하지 않습니다. 작동하지 않을 때, 예상했던 것과 얻을 수있는 것에 대한 예를 들어 줄 수 있습니까? –

0
int val1=10; 

int val2=6; 

long val3 = (long) val1 - val2; 
+0

그/그녀는 차이점에 대해 질문하고 있습니다. 계산 차이는 어디에 있습니까? –

+0

클래스 버전'Integer' /'Long'을 사용하기 때문에 이들 모두 "복싱"이 아닙니까? – weston

+2

아 .. 질문 제목과 질문 본문이 서로 모순됩니다. –

0

.

-1

간단한 긴 변환 및 빼기 :

public long diff(int i1, int i2) { 
    return ((long) i1) - i2; 
} 

오토 박싱 필요

+1

권투는 여기에 있습니까? 그냥 간단한 캐스트. – weston

+0

반환 값이 래퍼 변수에 저장되거나 매개 변수가 래퍼 인스턴스가 될 수 있습니다. 어쩌면 내 형량 자동 소기는 약간 오해의 소지가있다. 그 문장을 질문 * 제목 * 때문에 추가했습니다 (자본의 정수/Long에 대해 말합니다). – Durandal

+0

질문 제목이 질문과 일치하지 않습니다. 그것은 하복을 일으켰습니다! – weston

1

으로 풀기/포장을 담당 당신은 절대 차이를해야하는 경우 단지

long difference = (long) i1 - i2; 

을 할 수

long difference = Math.abs((long) i1 - i2); 

예 :

int i1 = 2000000000; 
int i2 = -2000000000; 
long difference = Math.abs((long) i1 - i2); 
System.out.printf("%,d%n", difference); 

인쇄

4,000,000,000 

당신이 long 캐스팅해야하는 이유는 오버 플로우를 방지하는 것입니다. 두 INT 값 사이의 가장 큰 차이는 최대와 최소 사이 그러나 당신이 캐스트 반면 인해 오버 플로우

System.out.println(Integer.MAX_VALUE - Integer.MIN_VALUE); 

인쇄

-1 

을 할 경우는

System.out.println((long) Integer.MAX_VALUE - Integer.MIN_VALUE); 
를 얻을 수

인쇄물

4294967295 
+0

캐스트가 필요하지 않습니다. – EJP

+0

'int-int'를 형 변환 한 @EJP는 오버플로하는'int'입니다. –

+0

오버 플로우는 어떻게됩니까? 두 피연산자는 모두 int이므로 차이는 int입니다. 필요한 것은 사인 확장입니다. 자동으로 승격됩니다. 오버플로는 어디 있습니까? – EJP

1
public Long difference(Integer i1, Integer i2){ 
    return new Long(i1-i2); 
} 
+1

'int' 또는'long'이 더 적절한 경우'Integer' 또는'Long'을 사용하지 않을 것입니다. –

0

분명히 이것은 로켓 과학입니다. i1과 i2가 정수 또는 int 인 경우 :

return i1-i2; 

Java 1.5 이상이 필요합니다. 그러나 캐스트 또는 변환이 없습니다.

당신이 아무것도 시도하지 않았다는 것을 말하기가 어렵습니다.

관련 문제