次の行を使用してfloatをintに変換しましたが、希望するほど正確ではありません。
float a=8.61f;
int b;
b=(int)a;
結果は:(8
あるべきです9
)
の場合a = -7.65f
、結果は次の-7
ようになります:(あるはずです-8
)
それを行うための最良の方法は何ですか?
次の行を使用してfloatをintに変換しましたが、希望するほど正確ではありません。
float a=8.61f;
int b;
b=(int)a;
結果は:(8
あるべきです9
)
の場合a = -7.65f
、結果は次の-7
ようになります:(あるはずです-8
)
それを行うための最良の方法は何ですか?
を使用Math.round()
すると、floatが最も近い整数に丸められます。
実際には、達成したい結果に応じて、floatをintにダウンキャストするさまざまな方法があります:( inti
の場合、float f
)
round(指定されたfloatに最も近い整数)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
注:これは、契約上、次のようになります。(int) Math.floor(f + 0.5f)
切り捨て(つまり、小数点以下のドットをすべて削除します)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
ceil / floor(小数部分がある場合、指定された値よりも常に大きい/小さい整数)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
正の値を丸める場合は、を使用することもできます。これは、これらの場合(int)(f + 0.5)
とまったく同じように機能Math.Round
します(ドキュメントによる)。
を使用Math.rint(f)
して、最も近い偶数の整数に丸めることもできます。小数部が厳密に.5に等しい多くのフロートを処理することを期待し(IEEEの丸めの問題の可能性に注意)、セットの平均を所定の位置に維持したい場合は、ほぼ間違いなく便利です。ただし、別のバイアスを導入します。このバイアスでは、奇数よりも偶数の方が一般的です。
見る
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
詳細といくつかの例については。
Math.round(value)
値を最も近い整数に丸めます。
使用する
1) b=(int)(Math.round(a));
2) a=Math.round(a);
b=(int)a;
Math.roundも整数値を返すため、型キャストする必要はありません。
int b = Math.round(float a);
Math.round(value)
型キャスト後に整数にキャストしてから使用します。
float a = 8.61f;
int b = (int)Math.round(a);
プリミティブをコンストラクターにFloat
渡してオブジェクトをインスタンス化し、作成したオブジェクトを使用してプリミティブを返します。float
Float
int
説明 |
---|
数値ラッパークラスはクラスを拡張するため、メソッドを使用して、任意の数値ラッパーオブジェクトに他の数値プリミティブ型を返すようjava.lang.Number にすることができます。.<type>Value() |
.intValue()
、プリミティブを返しint
ます。Float mFloat = Float.valueOf(8.65f);
int i = mFloat.intValue();
Math.round()で十分です
int b = Math.round(a)
これは仕事をします
浮動小数点値を整数値に変換する場合は、浮動小数点値をどのように丸めるかに応じて、いくつかの方法があります。
最初の方法は、浮動小数点値を四捨五入することです。
float myFloat = 3.14f;
int myInteger = (int)myFloat;
myFloat値が4に近い場合でも、このコードの出力は3になります。
2番目の方法は、float値を丸めることです。
float myFloat = 3.14f;
int myInteger = Math.ceil(myFloat);
丸めモードは常に最大値を探しているため、このコードの出力は4になります。
私の場合、簡単です:(int)(a +.5) //aはFloatです。四捨五入された値を返します。
Java Math.round()タイプに依存しません