1. 序章

データをFloatからStringに、またはその逆に変換することは、Javaの通常の操作です。 ただし、これを行うための多くの方法は、どちらを選択するかについて混乱と不確実性を引き起こす可能性があります。

この記事では、利用可能なすべてのオプションを紹介して比較します。

2. FloatからString

まず、Floatの値をStringに変換する最も一般的な方法を見てみましょう。

2.1. 文字列連結

使用できる最も簡単なソリューションは、浮動小数点値を空のStringと連結することです。

例を見てみましょう:

float givenFloat = 1.25f;

String result = givenFloat + "";

assertEquals("1.25", result);

同様に、Floatオブジェクトを空のStringに追加して、同じ結果を得ることができます。 Float オブジェクトを使用すると、その toString()メソッドが自動的に呼び出されます。

Float givenFloat = 1.25f;

String result = givenFloat + "";

assertEquals("1.25", result);

Float オブジェクトがnullの場合、連結結果は「null」になります 文字列

Float givenFloat = null;

String result = givenFloat + "";

assertEquals("null", result);

2.2. Float.toString()

使用できるもう1つのオプションは、 String変換用のFloatクラスの静的toString()メソッドです。 floatプリミティブ値またはFloatオブジェクトのいずれかをtoString()メソッドに渡すことができます:

Float givenFloat = 1.25f;

String result = Float.toString(givenFloat);

assertEquals("1.25", result);

メソッドの引数としてnullを渡すと、実行時にNullPointerExceptionが発生します。

Float givenFloat = null;

assertThrows(NullPointerException.class, () -> Float.toString(givenFloat));

2.3. String.valueOf()

同様に、Stringの静的valueOfメソッドを使用できます。

Float givenFloat = 1.25f;

String result = String.valueOf(givenFloat);

assertEquals("1.25", result);

Float.toString()とは異なり、引数としてnullを渡しても、String.valueOf()は例外をスローせず、代わりに「null」文字列が返されます

Float givenFloat = null;

String result = String.valueOf(givenFloat);

assertEquals("null", result);

2.4. String.format()

Stringのformat()静的メソッドは、追加のフォーマットオプションを提供します。 次の例に示すように、小数部の数を制限しないと、小数部がなくても結果に末尾のゼロが含まれることに注意する必要があります。

Float givenFloat = 1.25f;

String result = String.format("%f", givenFloat);

assertEquals("1.250000", result);

小数点以下の桁数を指定して浮動小数点数をフォーマットすると、 format()メソッドも結果を切り上げます

Float givenFloat = 1.256f;

String result = String.format("%.2f", givenFloat);

assertEquals("1.26", result);

null Float を渡すと、変換された結果は「null」Stringになります。

Float givenFloat = null;

String result = String.format("%f", givenFloat);

assertEquals("null", result);

2.5. DecimalFormat

最後に、 DecimalFormatクラスには、浮動小数点値をカスタム形式の文字列に変換できるformat()メソッドがあります。 利点は、結果のStringに必要な小数点以下の桁数を正確に定義できることです。

例でそれを使用する方法を見てみましょう:

Float givenFloat = 1.25f;

String result = new DecimalFormat("#.0000").format(givenFloat);

assertEquals("1.2500", result);

フォーマットを適用した後、小数部分がない場合、DecimalFormatは整数を返します。

Float givenFloat = 1.0025f;

String result = new DecimalFormat("#.##").format(givenFloat);

assertEquals("1", result);

nullを引数として渡すと、IllegalArgumentExceptionが発生します。

Float givenFloat = null;

assertThrows(IllegalArgumentException.class, () -> new DecimalFormat("#.000").format(givenFloat));

3. StringからFloat

次に、String値をFloatに変換する最も一般的な方法を見てみましょう。

3.1. Float.parseFloat()

最も一般的な方法の1つは、 Floatの静的メソッドparseFloat()を使用することです。 String引数で表されるプリミティブfloat値を返します。 さらに、先頭と末尾の空白は無視されます。

String givenString = "1.25";

float result = Float.parseFloat(givenString);

assertEquals(1.25f, result);

String 引数がnullの場合、NullPointerExceptionが発生します。

String givenString = null;

assertThrows(NullPointerException.class, () -> Float.parseFloat(givenString));

String引数に解析可能なfloatが含まれていない場合、 NumberFormatException:が発生します。

String givenString = "1.23x";

assertThrows(NumberFormatException.class, () -> Float.parseFloat(givenString));

3.2. Float.valueOf()

同様に、 Floatの静的valueOf()メソッドを使用できます。 違いは、valueOf()がFloatオブジェクトを返すことです。 具体的には、 parseFloat()メソッドを呼び出し、それをFloatオブジェクトにボックス化します。

String givenString = "1.25";

Float result = Float.valueOf(givenString);

assertEquals(1.25f, result);

同様に、解析不可能な String を渡すと、NumberFormatExceptionが発生します。

String givenString = "1.25x";

assertThrows(NumberFormatException.class, () -> Float.valueOf(givenString));

3.3. DecimalFormat

DecimalFormatを使用してStringFloatに変換することもできます。 主な利点の1つは、カスタム小数点区切り記号を指定することです

String givenString = "1,250";
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
DecimalFormat decimalFormat = new DecimalFormat("#.000");
decimalFormat.setDecimalFormatSymbols(symbols);

Float result = decimalFormat.parse(givenString).floatValue();

assertEquals(1.25f, result);

3.4. フロートのコンストラクタ

最後に、Floatのコンストラクターを直接変換に使用できます。 内部的にはFloatの静的parseFloat()メソッドを使用し、Floatオブジェクトを作成します:

String givenString = "1.25";

Float result = new Float(givenString);

assertEquals(1.25f, result);

Java 9の時点で、 このコンストラクターは非推奨になりました。 代わりに、次のような他の静的ファクトリメソッドの使用を検討する必要があります。 parseFloat() また valueOf()

4. 結論

この記事では、StringインスタンスをfloatまたはFloatインスタンスに変換したり元に戻したりするための複数の方法について説明しました。

単純な変換の場合、 String連結とFloat.toString()が、Stringへの変換に適したオプションです。 より複雑なフォーマットが必要な場合は、DecimalFormatが最適なツールです。 文字列を浮動小数点値に変換するには、 float プリミティブが必要な場合はFloat.parseFloat()を使用し、必要に応じて Float.valueOf()を使用できます。 Floatオブジェクト。 同様に、カスタムフォーマットの場合は、DecimalFormatが最適なオプションです。

いつものように、これらの例のコードはGitHubから入手できます。