Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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_Decimal - Fatal编程技术网

在Java中处理小数后有很多值的数字

在Java中处理小数后有很多值的数字,java,decimal,Java,Decimal,我知道 但是我得到了0.0。 我该怎么处理?我用double和float 感谢使用BigDecimal,它不会对非常大或非常小的数字引入任何舍入,但会消耗更大的内存和较慢的计算速度。任何财务数据都必须使用此类 0.00631 0.0002378 0.00571 如果值0.00631、0.0002378和0.00571是预期的除法结果,请确保您没有进行整数除法。也就是说,确保将分子或分母强制转换为浮点或双精度 而不是 BigDecimal val = new BigDecimal("100000

我知道

但是我得到了
0.0
。 我该怎么处理?我用
double
float


感谢使用
BigDecimal
,它不会对非常大或非常小的数字引入任何舍入,但会消耗更大的内存和较慢的计算速度。任何财务数据都必须使用此类

0.00631
0.0002378
0.00571

如果值
0.00631
0.0002378
0.00571
是预期的除法结果,请确保您没有进行整数除法。也就是说,确保将分子或分母强制转换为浮点或双精度

而不是

BigDecimal val = new BigDecimal("10000000000000.0002378");
System.out.println(val);
你能行

double fraction = someInt / someOtherInt;

在您的特殊情况下,您可以尝试以下方法

double fraction = (double) someInt / someOtherInt;

你得说得更具体些。可能会显示一些代码?您从哪里获得0.0?调试器、控制台、文件?特别是考虑到在科学记数法中查看小数点后不是很多值:
6.31e-3、2.378e-4、5.71e-3
。实际上,这些值不应该引起问题,因此我们需要更多信息。您正在使用整数进行除法检查aioobe的回答OP提供了更多信息,
BigDecimal
似乎不需要他所做的。
double fraction = (double) someInt / someOtherInt;
(double) Collections.frequency(list, list.get(i)) / list.size();