28

Javaで剰余と商を単一の値で取得する方法を知りたいです。

例:

3/2 値は 1.5 になるはずです。

演算子を使用すると/、商のみが得られます。演算子を使用する%と、残りのみが得られます。同じ変数で一度に両方を取得するにはどうすればよいですか?

4

10 に答える 10

58
quotient = 3 / 2;
remainder = 3 % 2;

// now you have them both
于 2009-03-20T04:51:19.187 に答える
19

あなたの例では、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)

于 2009-03-20T04:49:50.983 に答える
8

これをチェックしてください:http://download.oracle.com/javase/1,5.0/docs/api/java/math/BigDecimal.html#divideAndReminder%28java.math.BigDecimal%29

intまたはlong変数をBigDecimalオブジェクトでラップし、その上でsplitAndRemainderメソッドを呼び出すだけです。返される配列には、商と剰余が (この順序で) 含まれます。

于 2011-09-20T12:16:29.017 に答える
7

ご心配なく。あなたのコードでは、あなたが言及したように / と % の操作を別々に行うだけですが、非効率に見えるかもしれません。JIT コンパイラーは、これらの演算を組み合わせて商と剰余の両方を 1 つの機械語命令で取得することを気にかけます (私が思い出す限りでは、一般的にそうなっています)。

于 2009-03-20T05:34:09.753 に答える
1

両方のパラメータを として初期化するとfloat、実際の分割値が確実に得られます。例えば:

float RoomWidth, TileWidth, NumTiles;
RoomWidth = 142;
TileWidth = 8;
NumTiles = RoomWidth/TileWidth;

答え:17.75.

于 2014-04-22T05:36:48.920 に答える