Java 将两个浮点值除以零

Java 将两个浮点值除以零,java,double,Java,Double,我已经在python和scala世界呆了一段时间,所以没有回复或解释器真的让我做调试的噩梦。我有以下代码: int count = someInteger; for (Map.Entry<String, Integer> entry : myMap.entrySet()) { if(!entry.getKey().equals("20") && top5 < 5) { String movie = entry.getKey();

我已经在python和scala世界呆了一段时间,所以没有回复或解释器真的让我做调试的噩梦。我有以下代码:

int count = someInteger;
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
    if(!entry.getKey().equals("20") && top5 < 5) {
        String movie = entry.getKey();
        int xandy = entry.getValue();
        System.out.println(movie + "," + Float.toString(xandy / count));
        top5 += 1;
    }
}
试试这个:

int count = someInteger;
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
    if(!entry.getKey().equals("20") && top5 < 5) {
        String movie = entry.getKey();
        int xandy = entry.getValue();
        System.out.println(movie + "," + Float.toString((float)xandy / (float)count));
        top5 += 1;
    }
}
int count=someInteger;
对于(Map.Entry:myMap.entrySet()){
如果(!entry.getKey().equals(“20”)&&top5<5){
字符串movie=entry.getKey();
int xandy=entry.getValue();
System.out.println(movie+,“+Float.toString((Float)xandy/(Float)count));
top5+=1;
}
}
注意xandy和count的浮点类型转换尝试以下操作:

int count = someInteger;
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
    if(!entry.getKey().equals("20") && top5 < 5) {
        String movie = entry.getKey();
        int xandy = entry.getValue();
        System.out.println(movie + "," + Float.toString((float)xandy / (float)count));
        top5 += 1;
    }
}
int count=someInteger;
对于(Map.Entry:myMap.entrySet()){
如果(!entry.getKey().equals(“20”)&&top5<5){
字符串movie=entry.getKey();
int xandy=entry.getValue();
System.out.println(movie+,“+Float.toString((Float)xandy/(Float)count));
top5+=1;
}
}

注意xandy和count的浮点转换,您正在Java中执行整数除法,结果是一个整数,因此除法的任何小数部分都会被截断

要获得浮点商,首先将其中一个变量转换为
float
double
,以便进行浮点除法

((float) xandy / count)
根据报告:

整数除法向0舍入。也就是说,为 二进制数字提升后的整数操作数n和d (§5.6.2)是一个整数值q,其大小尽可能大 同时满足| d·q |≤ |n |。此外,当| n |时,q为正≥ |d| n和d有相同的符号,但当| n |时q为负≥ |d |和n 和d有相反的符号


将其中一个强制转换为浮动就足够了。Java会将另一个操作数提升为浮点,以匹配类型,然后执行除法。

您在Java中执行整数除法,结果是整数,因此除法的任何小数部分都会被截断

要获得浮点商,首先将其中一个变量转换为
float
double
,以便进行浮点除法

((float) xandy / count)
根据报告:

整数除法向0舍入。也就是说,为 二进制数字提升后的整数操作数n和d (§5.6.2)是一个整数值q,其大小尽可能大 同时满足| d·q |≤ |n |。此外,当| n |时,q为正≥ |d| n和d有相同的符号,但当| n |时q为负≥ |d |和n 和d有相反的符号


将其中一个强制转换为浮动就足够了。Java将另一个操作数提升为一个
浮点数
,以匹配类型,然后执行除法。

这里有两个整数,其中有两个浮点数?xandy和count是整数,它们不能返回小数,因此返回0,然后得到0fso如果我这样做,它应该正常工作
(float)xandy/(float)count
但它不会自己打印
xandy
,以确保它不是零。在调试器下运行时也可以看到变量值。我认为问题在于
System.out.println(movie+”,“+Float.toString((Float)xandy/(Float)count))因为当我隔离分区时,它会工作。奇怪。这里有两个整数,其中有两个浮点值?xandy和count是整数,它们不能返回小数,所以它返回0,然后得到0fso如果我这样做,它应该正常工作
(float)xandy/(float)count
但它不会自己打印
xandy
,以确保它不是零。在调试器下运行时也可以看到变量值。我认为问题在于
System.out.println(movie+”,“+Float.toString((Float)xandy/(Float)count))因为当我隔离分区时,它会工作。奇怪。虽然这是正确的,
cast
对一个整数进行转换就足够了。如果不起作用,我开始怀疑注意:使用-Xlint重新编译:未选中以获取详细信息。如果这与问题有关。在尝试分割之前,您可以打印xandy吗?如果xandy为0,则结果为0。虽然这是正确的,但对整数进行一次强制转换就足够了。没有起作用我开始怀疑注意:使用-Xlint重新编译:未选中以获取详细信息。如果这与问题有关。在尝试分割之前,您可以打印xandy吗?如果xandy为0,则结果为0。