• Daum
  • |
  • 카페
  • |
  • 메일
  • |
 
카페정보
# 함께하는 자바 #
 
 
 
카페 게시글
Q & A.. 했는데요.. 앙쿠미님 이것도 왜자꾸 돌리면 익셉션이 뜨는지.. 미치겠어요.. ㅜ.ㅜ
MAPLEJAVA 추천 0 조회 78 05.07.04 04:49 댓글 12
게시글 본문내용
 
다음검색
댓글
  • 05.07.04 09:37

    첫댓글 int 형 변수의 범위는 2,147,483,647까지 입니다. 즉 10자리 까지만 int에 담을 수 있는거죠... 그러니 숫자를 10개이상 집어 넣으면 익셉션이 뜨는겁니다. 변수를 int보다큰 long으로 하면 19자리까지 담을수있습니다. ^^

  • 작성자 05.07.04 12:07

    헉... ㅜ.ㅜ 대체 몇시간을 더 소배해야 하나... 미치겠어요.. 더이상 머리가 안 돌아가요.. ; 제 생각엔 이게 인덱스 때문이 아닐까요.. 인덱스가 0-9 이자나요.. 그래서 10넘어가면 더이상 인덱스가 없죠.. 하지만 숫자는 최대 40까진데.. 이걸 어케 한담.. 미쳐미쳐.. (int)(num.charAt(counter) - '0'); 이케하면

  • 05.07.05 00:28

    인덱스 문제는 아니고 int형의 변수 범위 때문입니다. sum 이라는 메쏘드에 number1과 number2가 int 형입니다 , 양쿠미님 말처럼 int는 10자리 수까지 밖에 담을 수가 없는데 10자리가 넘는 수를 int형 변수 집어 넣을려하니 에러가 납니다 (줄번호 41과 35) number1과 number2를 float형으로 바꾸어 보세요

  • 05.07.05 00:01

    float형은 39자리까지 수를 받을 수 있고 40자리가 되면 "Infinity"라는 값을 주어 익셉션이 뜨지 않습니다.

  • 작성자 05.07.05 01:33

    마자요... 메모리부족으로 그런것같은데요.. 근데 안되요.. float 으로 바꾸면.. posslible loss of precision 이렇게 나와요.. 안돼요 안돼.. ㅜ.ㅜ float 은 인티저랑 같은 4바이트라서 10자리빡에.. long은 64비트라서 19자리까지 나오는데.. 저는 40자리까지 나와야 하는데... ㅠ.ㅠ 돌아가심..

  • 05.07.05 12:58

    "posslible loss of precision"은 정보를 잃을 때 나오는 경고성 메시지입니다. 예를 들어, double형 변수에만 적합한 큰 수를 int형 변수에 넣을 때요 (narrowing conversion) long형 변수보다 넘는 범위는 float형과 double형으로 받을 수 있지만,float과 double도 숫자형태가 아닌 숫자값(?)을 보여줍니다. 예를 들어,

  • 05.07.05 12:59

    40자리를 가진 큰 수는 대충 "1.2345678890123457E47" 따위의 수로 표현이 되는.. (수 중간에 E자 들어가지요?) 이 방법은 님이 만들고자 하는 프로그램과는 좀 안 맞네요. 결과값이 40자리까지 표현이 되지 않으니...제 생각엔 String형으로 받은 입력값을 정수형태(int,long형)로 변형시킨 다음 결과값을 계산하지 마시고

  • 05.07.05 13:02

    String형인 입력값을 "charAt(int index)"등의 메쏘드로 수를 하나 하나씩 "char"형으로 뽑아서,"char"형을 "int"형로 변형시켜서 하나씩 더하시는 것이 좋을 듯... 한자리 수는 계산하기 좋잖아요. 그렇게 나온 40개의 한자리 수를 다시 "concat(String str)"등의 메쏘드를 이용해 재조합해서 40자리 수인 결과값 "String"

  • 05.07.05 13:03

    형으로 얻는 것이 좋을 듯 하네요. 예를 들어, num1의 1번째 수와 num2의 1번째 수를 따로 뽑아서 결과 값을 result의 1번째 자리에 넣어주고... num1의 2번째 수와 num2의 2번째 수를 따로 뽑아서 결과 값을 result의 2번째 자리에 넣어주고... 그렇게 40자리까지 계산을 하나 하나씩...

  • 05.07.05 13:07

    한자리 수 2개를 더한 값이 10이 넘는 경우엔 다음 수 계산 할 때 1을 한번 더 더해주는 것을 계산해야 하는 골치아픔이 있지만.예를 들어,6번째 자리의 결과값이 14가 나오면 6번째 자리에 4를 넣어주고 7번째 자리에 결과값에다 1을 한번 더 더하는... 이러면 숫자범위에 안 걸리고 40자리까지 표현할 수 있을 듯 합니다.

  • 05.07.05 13:11

    에... 이해하기 너무 힘든가요...? -_-a

  • 작성자 05.07.10 03:26

    하하하 아니요 .. 감사합니다. 해결했어요.. 하나씩 뽑아서.. 하하.. 죽는줄 알았네;; 올릴께요 제가한거. ㅋㅋ

최신목록