2016-11-06 116 views
-3

我知道讓一個int的倒數會去是這樣的:獲得一個浮點數的倒數?

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

但你會如何去得到一個浮點數的倒數?它會以同樣的方式?現在我有用戶輸入倒數,這不是最優的。有任何想法嗎?

編輯

爲了澄清這裏的一些僞代碼:

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

謝謝!

+0

整數不能存儲十進制數字。你可以投,但是你丟失了數據 – ItamarG3

+1

'float recip = 1 /(float)foo;'。或者'float recip = 1F/foo'。 –

+1

'float recip = 1/foo'不會給你一個int的倒數,它會給你'0';你甚至嘗試過嗎?而且,嘗試'1/input'還有多遠? –

回答

5

你會如何將float轉換爲int?

這取決於你想要發生的小數部分。

如果你想砍掉它,你可以投:

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

如果你想詳談,使用JDK的庫中的各種取整方法,如Math.round(float)

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 

......將其四捨五入。 (還有其他的舍入方法,讓你的一半以上,達到與半降與半甚至控制,對向零舍入,而不是正無窮大,等等)


邊注:有幾乎從來沒有一個很好的理由使用float而不是double。並注意小數常數,例如2.0,分別是double s。如果您想要float s,請在末尾輸入f2.0f。但是,再次使用double。 :-)

+1

然後做1。0除以它然後如上所述循環。 –

+0

@ user2352923::)我已經添加到最後... –

+1

謝謝!奇蹟般有效。對於誤導性問題抱歉。 – user2352923