我想知道如何在Java中获得单值的余数和商.
例:
3/2我应该得到1.5的价值.
如果我使用/
运算符,我只得到商.如果我使用%
操作员,我只得到余数.如何在同一个变量中同时获得两者?
quotient = 3 / 2; remainder = 3 % 2; // now you have them both
在您的示例中,Java正在执行整数运算,舍入除法的结果.
根据您的问题,您希望执行浮点运算.为此,必须至少将一个术语指定为(或转换为)浮点数:
指定浮点数:
3.0/2 3.0/2.0 3/2.0
转换为浮点数:
int a = 2; int b = 3; float q = ((float)a)/b;
要么
double q = ((double)a)/b;
(请参阅Java陷阱:双重和Java浮点数复杂性,以便讨论float
和double
)
看看这个:http://download.oracle.com/javase/1,5.0/docs/api/java/math/BigDecimal.html#divideAndRemainder%28java.math.BigDecimal%29
您只需要在BigDecimal对象中包装int或long变量,然后在其上调用divideAndRemainder方法.返回的数组将包含商和余数(按此顺序).
别担心.在你的代码中,只要你提到单独的/和%操作,即使它看起来效率低下.让JIT编译器担心组合这些操作以在单个机器指令中获得商和余数(据我记得,它通常会这样做).