在Java中,有三種方法能夠將float轉換爲long或int,但咱們只關注long數據類型部分。學習
將float數據類型轉換爲long值的第一種方法是將auto-box float原語轉換爲float對象並調用longValue()方法。spa
這是一種更結構化的方法,由於其餘方法只是簡單地將float轉換爲long或int以去掉小數點。code
也能夠按照如下提示編寫Java程序,經過將long方法替換爲對應的int方法,將float轉換爲int。對象
另外,還可使用Math.round()而後將其轉換回long數據類型。it
第二種方法是最簡單的,若是隻是去掉小數點後的數字,但若是須要四捨五入,那麼第三種方法是最好的將float數據類型轉換爲long。ast
在本文中,將學習在Java中執行float到long轉換的三種方法。class
在Java中將float轉換爲long的3種方法 方案一- Casting變量
Java支持類型轉換,它是將一種數據類型轉換爲另外一種數據類型的,但只能將較高的值轉換爲較低的值。因爲float的範圍比long長,所以可使用類型轉換將其轉換爲long,以下所示:數據類型
<float number = 444.33f;
long aValue = (long) number; // 444>
複製代碼
它不會作任何事情,只是丟棄小數點後的值,所以將在fromFloat變量中獲得3的值 。float
若是想把float轉換成 int,那麼你應該把float轉換成整型數,而不是轉換成long型數,這是最簡單的轉換方法。
解決方案2 - Float.longValue
將float轉換爲long的另外一種方法是首先將float值自動裝入Float包裝對象,而後調用Float.longValue() 方法。此方法在內部將浮點值轉換爲long,如上圖和下面的代碼所示:
<public long longValue(){
return(long)value;
}>
複製代碼
如下是如何使用此方法進行轉換:
<Float PIE = 3.14f;
long fromFloat = PIE.longValue();>
複製代碼
當你具備Float對象而不是float原始值時,此方法更合適。
解決方案3 - Math.round和Casting
有時轉換並不像丟棄小數點後的內容那樣簡單。可能須要先進行舍入,而後再進行轉換。若是是這種狀況,那麼可使用Math.round()方法先進行舍入,再進行類型轉換,將double轉換爲long,Math.round()方法返回一個double值。下面是實現這種轉換的示例代碼:
<// 使用Math.round()並強制轉換爲long
float points = 333.322f;
long rounded = Math.round(points);
System.out.printf("float : %f, long : %d %n", points, rounded);
points = 333.922f;
rounded = Math.round(points);
System.out.printf("float : %f, long : %d %n", points, rounded);
Output : float : 333.321991, long : 333 float : 333.921997, long : 334>
複製代碼
能夠看到舍入的效果,在第一個示例中,float是向下舍入的,這就是爲何轉換的long值是333,而在第二個示例中它被舍入,這就是爲何long值爲334.
Java程序將float轉換爲long數據類型 下面代碼所示,它結合了三種方法將float轉換爲long。能夠看到它們是如何工做的,並學習如何執行另外一個相似的轉換技術,如float to int,short或byte或double to long,int,short和byte。
</**
* 用於在Java中將float轉換爲long
*
* @author Javarevisited
*/
public class FloatToLongConverter{
public static void main(String[] args) {
// Autobox浮動到Float而後調用Float.longValue();
Float PIE = 3.14f;
long fromFloat = PIE.longValue();
System.out.printf("float value %f, long value %d %n", PIE, fromFloat);
// 簡單的類型轉換來消除小數
float number = 444.33f;
long aValue = (long) number;
System.out.printf("float value %f, after casting into long %d %n", number, aValue);
// 使用Math.round()並將其轉換回long
float points = 333.322f;
long rounded = Math.round(points);
System.out.printf("float : %f, long : %d %n", points, rounded);
}
}
Output :
float value 3.140000, long value 3
float value 444.329987, after casting into long 444
float : 333.321991, long : 333 >
複製代碼
這就是如何在Java中將float轉換爲long數據類型。若是你只是刪除十進制值,則類型轉換是最簡單的方法。這不是在Java中舍入數字的惟一方法,但它適用於大多用途。