java - double 和整数转换

标签 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 给出 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/

相关文章:

java - 自动装箱性能

scala - 如何匹配 "boolean"类型和 "Boolean"类型的类?

java - 寻找两个节点之间的最短距离

java - 为什么在weblogic中LeakedConnectionCount总是0?

java - 使用 Java 8 的 Spring 4 + MyBatis 集成问题

generics - Kotlin:在我的通用函数中未经检查的强制转换

C# 浮点表达式 : strange behavior when casting the result float to int

java - 装箱的值被取消装箱,然后立即重新装箱

java - 标记为 "continue"似乎不起作用

c - 为什么我需要将 -1 的值转换为字符(为 AVR 微 Controller 编译时)