我正在尝试解决这个问题:
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 给出 double 值?
哈希表为<String, Integer>
最佳答案
正如 @GregS 在他的评论中指出的那样,一个 int 除以一个 int 就是一个 int。 将其中一个数字转换为 double 将产生您想要的输出。
double chiSquare = ((double)hashtable.get(key).intValue())/noWords;
或者,使用 Integer 上的便捷方法将其转换为 double :
double chiSquare = hashtable.get(key).doubleValue()/noWords;
关于java - double 和整数转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5254357/