0

タイトル名で申し訳ありませんが、これはおそらく面白い質問です。私はこれをそのまま持つ必要があります。[10.0, 20.0, 30.0, 40.0, 50.0]のように表現する配列が必要な形式の浮動小数点数の配列があり[10.0f, 20.0f, 30.0f, 40.0f, 50.0f]ます。配列 List を使用して、表記を変換して追加し、元に戻そうとしましたが、何を試しても、double のように見える float 配列が得られます。アイデアはありますか?

次のようなことも試しました:

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]);
}
4

3 に答える 3

0

メンバーがフロートである元の配列を保持し、「String myToString()」メソッドを作成して、+「f」を使用して必要に応じて印刷します。つまり、表示したいように配列を印刷するためのパーソナライズされた方法を作成します。

float の配列の出力を最後の f で「表示」したいだけだと思います。数値のマシンでの表現は、最後に f があってもなくても変わりません。文字列の最後の f は、数値を解析するときに役立ちます。そのため、パーサーはそれがどの種類の数値であるかがわかります (まだ伝えていない場合)。

于 2013-07-24T12:16:53.707 に答える
0

fこれを浮動小数点数として扱うようにコンパイラに指示するために使用されます。この形式の配列が必要な場合は、文字列の配列を使用しf、各要素に追加します

JLSによると:

F浮動小数点リテラルは、末尾に ASCII 文字またはf;が付いている場合、float 型です。それ以外の場合、その型は double であり、オプションで ASCII 文字Dまたはd(§4.2.3) をサフィックスとして付けることができます。

于 2013-07-24T12:15:47.097 に答える
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;
}

はをにreadJavaFormatString(String)変換し、Stringaでラップされたを に変換し、上記のコンストラクタに渡します。だから、私は短いです、あなたは持っています.double.floatValue()doubleFloatingDecimalfloatfloat

注意:

float num1 = XYZ;
float num2 = XYZf;

異なる表記にもかかわらず、同じバイトコードnum1num2コンパイルします ( XYZ123 などの数字があります)。fただし、 an で終わる番号を anと言うために割り当てることはできませんint。さらに、float に an を入れようとする場合、最後にintthe は必要ありませんが、f数値の基数の右側に数値がある場合は、エラーfでコンパイルされるように、を追加する必要がありpossible loss of precisionます。

また、特に比較のためfloatに使用する予定がある場合は、正当な理由がない限り使用しないでください。==代わりに、を使用してdoubleください。 floatdoubleは本質的に同じものですが、それdoubleは 64 ビットですが、afloatは 32 ビットであるため、a のdouble方が正確です。

于 2013-07-24T13:17:36.153 に答える