Javaで剰余と商を単一の値で取得する方法を知りたいです。
例:
3/2 値は 1.5 になるはずです。
演算子を使用すると/
、商のみが得られます。演算子を使用する%
と、残りのみが得られます。同じ変数で一度に両方を取得するにはどうすればよいですか?
quotient = 3 / 2;
remainder = 3 % 2;
// now you have them both
あなたの例では、Java は整数演算を実行し、除算の結果を四捨五入しています。
あなたの質問に基づいて、浮動小数点演算を実行したいと考えています。そのためには、項の少なくとも 1 つを浮動小数点として指定する (または浮動小数点に変換する) 必要があります。
浮動小数点の指定:
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 Traps: doubleおよびJava Floating-Point Number Intricaciesfloat
を参照してくださいdouble
)
これをチェックしてください:http://download.oracle.com/javase/1,5.0/docs/api/java/math/BigDecimal.html#divideAndReminder%28java.math.BigDecimal%29
intまたはlong変数をBigDecimalオブジェクトでラップし、その上でsplitAndRemainderメソッドを呼び出すだけです。返される配列には、商と剰余が (この順序で) 含まれます。
ご心配なく。あなたのコードでは、あなたが言及したように / と % の操作を別々に行うだけですが、非効率に見えるかもしれません。JIT コンパイラーは、これらの演算を組み合わせて商と剰余の両方を 1 つの機械語命令で取得することを気にかけます (私が思い出す限りでは、一般的にそうなっています)。
両方のパラメータを として初期化するとfloat
、実際の分割値が確実に得られます。例えば:
float RoomWidth, TileWidth, NumTiles;
RoomWidth = 142;
TileWidth = 8;
NumTiles = RoomWidth/TileWidth;
答え:17.75.