double和Integer转换

时间:2011-03-10 01:13:54

标签: java casting autoboxing

我想弄清楚这一点:

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

为什么打印chiSquare,打印为零,而打印1/841给出双倍值? 哈希表是<String, Integer>

2 个答案:

答案 0 :(得分:4)

正如@GregS在他的评论中指出的那样,int除以int是一个int。 将其中一个数字转换为双数将产生您想要的输出。

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

或者,使用Integer上的便捷方法将其转换为double:

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

答案 1 :(得分:1)

因为括号不正确。

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