2011-03-10 4 views
2

더블 정수 변환 : 왜 chiSquare를 인쇄나는이 문제를 알아 내려고 노력하고 있어요

double chiSquare = ((double)(hashtable.get(key).intValue()/noWords))/* * Math.log10((NO_DOCUMENTS/all.get(key)))*/; 
if (key.equals("love")){ 
    System.out.println(hashtable.get(key)); 
    System.out.println(all.get(key));     
    System.out.println(noWords);  
    System.out.println(chiSquare); 
    System.out.println((double)1/841); 
    System.exit(0); 
} 

, 8백41분의 1을 인쇄하는 이중 가치를 제공하는 동안, 0을 출력한다? 해시 테이블의 값은 <String, Integer>

+3

(더블) (8백41분의 1) == 0 만 (더블) 8백41분의 1 == 1.0/841. 이유를 알아낼 수 있습니다. –

답변

4

@GregS가 그의 의견에서 지적한 것처럼, int로 나눈 int는 int입니다. 두 숫자 중 하나를 캐스팅하면 원하는 출력이 생성됩니다.

double chiSquare = ((double)hashtable.get(key).intValue())/noWords; 

또는 더블로 변환 정수에 편리한 방법을 사용하십시오

double chiSquare = hashtable.get(key).doubleValue()/noWords; 
+1

'Integer # doubleValue()'가 명확한 방법입니다. +1 –

1

이므로 괄호가 잘못되었습니다.

double chiSquare = ((double) hashtable.get(key).intValue())/noWords; 
관련 문제