2

私はこれを理解しようとしています:

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);
}

1/841を印刷すると倍の値が得られるのに、なぜchiSquareを印刷してゼロを印刷するのですか?ハッシュテーブルは<String, Integer>

4

2 に答える 2

4

@GregSが彼のコメントで示したように、intをintで割ったものはintです。数値の1つをdoubleにキャストすると、希望する出力が生成されます。

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

または、Integerの便利なメソッドを使用してdoubleに変換します。

double chiSquare = hashtable.get(key).doubleValue()/noWords;
于 2011-03-10T01:22:29.060 に答える
1

かっこが間違っているからです。

double chiSquare = ( (double) hashtable.get(key).intValue() )/noWords;
于 2011-03-10T01:19:06.843 に答える