2016-11-06 3 views
-3

私はこのような何かを行くだろうint型の逆数を得ることを知っている:フロートの逆数を取得しますか?

int foo = 5; 
float recip = 1/foo; 

いますが、フロートの逆数を得ることについてどのように行きますか?それは同じように行くのだろうか?今、私はユーザーに逆数を入力させていますが、これは最適ではありません。何か案は?明確にするため

EDIT

ここではいくつかの擬似コードは次のとおりです。

float input = 0.25; 
int recip = (get reciprocal here); 
System.out.println(recip); //should return 4 

ありがとう!

+0

整数に10進数を格納することはできません。キャストできますが、データは失われます – ItamarG3

+1

'float recip = 1 /(float)foo;'。または 'float recip = 1F/foo'です。 –

+1

'float recip = 1/foo'はあなたにintの逆数を与えません。' 0'を返します。あなたもそれを試しましたか?そして、これまでに '1/input'を試してみましたか? –

答えて

5

浮動小数点型をint型に変換するにはどうすればよいですか?

これは、分数部分に何を起こしたいかによって異なります。あなたはそれを切り落とすする場合

、あなたはキャストすることができます:

float floatValue = 2.7f; 
int value = (int)floatValue; 
System.out.println(value); // 2 

あなたは、それを丸めるなどMath.round(float)としてJDKのライブラリ内のさまざまな丸め方法を使用したい場合。あなたのコメントを再

float floatValue = 2.7f; 
int value = Math.round(floatValue); 
System.out.println(value); // 3 

私はより多くの価値ではなく、丸めた値の逆数を見つけるための方法を探しています。例えば、私は私の値として0.25を持っていた場合は、その後、私は私の出力のために4を受け取りたい、など

逆数は、その後、値を超えるものである場合:

float input = 0.25f; 
int recip = (int)(1.0f/input); 
System.out.println(recip); // 4 

..小数部分を切り捨てる、または

float input = 0.25f; 
int recip = Math.round(1.0f/input); 
System.out.println(recip); // 4 

...それをラウンドします。 (そして、あなたが半分ダウン対半分でも対ハーフアップを制御、対むしろ正の無限大、などよりも、ゼロに向かって丸めを与える他の丸め方法がある)


サイドノート:ありますdoubleではなく、floatを使用する正当な理由はほとんどありません。そして10進定数、例えば2.0は、doublesです。 floatが必要な場合は、末尾にfを付けてください:2.0f。しかし、もう一度:doubleを使用してください。 :-)

+1

次に、1を実行します。0をそれで割って上記のように丸めます。 –

+0

@ user2352923 :-)私は最後に追加しました... –

+1

ありがとう!魅力のように動作します。誤解を招くような質問を申し訳ありません。 – user2352923

関連する問題