Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双值除法结果不正确_Java_Division - Fatal编程技术网

Java 双值除法结果不正确

Java 双值除法结果不正确,java,division,Java,Division,我在除法时遇到问题。我有这段代码,其中该操作必须是40.4239,但我有一个结果:0.005595493389623997 我可以理解小数的数量,我必须用小数格式解决它,但我不能理解这个结果… 在这种情况下,contTotal是288975,因此:(288975/714861)*100=40.4239 有什么想法吗 int contTotal = 0; double result = 0; for(DoubleWritable val : valores) { con

我在除法时遇到问题。我有这段代码,其中该操作必须是
40.4239
,但我有一个结果:
0.005595493389623997

我可以理解小数的数量,我必须用小数格式解决它,但我不能理解这个结果…
在这种情况下,contTotal是
288975
,因此:
(288975/714861)*100=40.4239

有什么想法吗

int contTotal = 0;  
double result = 0;
    for(DoubleWritable val : valores) {
        contTotal += val.get();
    }
    result = (contTotal/714861) *100; 

你可以这样做:

double z = (288975.0/714861.0)*100.0;

我不知道这是否有帮助,但看起来确实需要进行两次除法,因为
(40.423/714861)*100
实际上是
0.005595493389623997

我一定会检查。

尝试将
contTotal
的类型更改为
double
。另外,
(288975/714861)*100
不是
40.4239
,因为
int/int
返回
int
(288975d.0/714861)*100
40.42394255666486
。是的,我试过了,但我得到了相同的结果…那么问题在于您没有向我们展示的部分代码。你确定
contTotal
288975
?如果你得到的答案是这样的,那么
contTotal
是40。如果您确定
contTotal
不是40,那么一定有其他代码您没有显示给我们。是的,我查到我的contTotal是288975.0,ehit这个代码:double contTotal=0.0;for(DoubleWritable val:valores){contTotal+=val.get();}context.write(claves,新的DoubleWritable(contTotal));是的,我试过了,我得到了这个结果:0.00565479758395896这完全不可能-这里显示的计算肯定返回40.4239。contTotal应该是double,而不是int。这是一个mapreduce应用程序,我用Java在Eclipse中实现。但问题在于除法,其他结果都可以。我所有的变量都是双重类型的,我得到了一个错误的值。我不明白。