计算java中两个双精度的余数

Jas*_*ine 5 java double

我有以下代码:

Double x = 17.0;
Double y = 0.1;

double remainder = x.doubleValue() % y.doubleValue();
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到余数= 0.09999999999999906

知道为什么??

我基本上需要检查x是否可被y完全整除.你能在java中建议其他方法吗?

谢谢

Boz*_*zho 11

因为如何表示浮点数.

如果您需要精确值,请使用BigDecimal:

BigDecimal remainder = BigDecimal.valueOf(x).remainder(BigDecimal.valueOf(y));
Run Code Online (Sandbox Code Playgroud)

另一种方法是将每个值乘以10(或100,1000),强制转换为int然后使用%.