2013-07-24 66 views
0

很抱歉標題名稱,但這可能是一個有趣的問題。我需要像這樣。我有一個格式爲[10.0, 20.0, 30.0, 40.0, 50.0]的浮點數組,我需要將數組表示爲[10.0f, 20.0f, 30.0f, 40.0f, 50.0f]。我已經嘗試使用數組List來轉換和添加符號和轉換回..但無論我嘗試,我仍然得到一個float數組,看起來像一個雙。任何想法請?使用符號Java將數組轉換爲浮動數組

甚至試過這樣的事情:

ArrayList<String> valuelist = new ArrayList<String>(); 
for(int z = 0; z < mValues.length; z++){ 
    valuelist.add(Float.toString(mValues[z]) + "f"); 
} //its fine here but later changes 

Object[] objarray2 = valuelist.toArray(); 
String[] stringfloat = Arrays.copyOf(objarray2, objarray2.length, String[].class);    
float[] myfloat = new float[stringfloat.length]; 
for(int j =0; j< myfloat.length; j++){ 
    //myfloat[j] = Float.parseFloat(stringfloat[j]); 
    myfloat[j] = Float.valueOf(stringfloat[j]); 
} 
+1

這將是一個'String'數組,使用浮點數字您需要對數組元素進行硬編碼。 – NINCOMPOOP

+1

我可以問問你爲什麼需要它? –

+0

'float'和'double'數據類型都是浮點數,唯一的區別就是它們的範圍。漂浮物看起來像雙重是正常的。 – erencan

回答

0

f被用來告訴編譯器對待這爲浮點數。如果你希望你以這種格式數組中

JLS每個元素使用字符串數組和追加f

浮點文字是float類型的,如果它與ASCII字母后綴Ff;否則它的類型是雙倍的,並且它可以選擇性地以ASCII字母Dd(§4.2.3)作爲後綴。

0

將原始數組保存在float成員中,只需創建一個「String myToString()」方法就可以用+「f」來打印它。 我的意思是,創建一個個性化的方法來打印陣列,就像您想要的那樣。

我想你只是想打印浮法數組「出現」與最後的f。 在機器中的數字表示不會隨着f而改變。 字符串中的最後一個字符串在解析數字時非常有用,因此您解析器知道它是哪種數字,如果您已經不告訴它的話。

0

您有:

myfloat[j] = Float.valueOf(stringfloat[j]); 

這裏的Float.valueOf(String)

public static Float valueOf(String s) throws NumberFormatException 
{ 
    return new Float(FloatingDecimal.readJavaFormatString(s).floatValue()) 
} 

正如你所看到的,它返回一個Float,這是通過Float(float)構造,這簡直是創建:

public Float(double value) 
{ 
    this.value = (float) value; 
} 

The readJavaFormatString(String) co將String轉換爲double.floatValue()double轉換爲FloatingDecimal,轉換爲float,將其傳遞給上述構造函數。 所以,即時消息,你確實有一個float

NB:

float num1 = XYZ; 
float num2 = XYZf; 

儘管不同符號,num1num2編譯到相同的字節碼(其中XYZ一些數字,說123);但是,您無法分配以f結尾的數字來表示int。此外,如果您嘗試將int放入浮點數中,最後不需要f,但如果您的數字在基數的右邊有任何數字,則需要附加f,以便它可以用possible loss of precision錯誤。

此外,除非有充分的理由,否則您確實不應該使用float,特別是如果您打算使用==進行比較;而是使用doublefloatdouble基本上是相同的,但double是64位,而float是32位,所以double更精確。

相關問題