java:floatをStringに、Stringをfloatに変換します


211

フロートから文字列または文字列からフロートに変換するにはどうすればよいですか?

私の場合、2つの値の文字列(テーブルから取得した値)と計算した浮動小数点値の間のアサーションを作成する必要があります。

String valueFromTable = "25";
Float valueCalculated =25.0;

私はフロートから文字列に試しました:

String sSelectivityRate = String.valueOf(valueCalculated );

アサーションは失敗します


9
あなたfloat値が決して正確ではないことを知っていますか?
xtofl 2009

1
それらStringfloat値として、または値として比較しますか?これは同じことではありません。floatよりも精度が低くdouble、どちらかが計算値からの丸め誤差を持つ可能性があります。
Peter Lawrey、2011

3
グーグルと混同しないようにグーグル。;)
Peter Lawrey、2011

私はあなたに解決策とゴーグルを試してみましたが、アサーションを作成すると:java.lang.AssertionError:expected:<25>が得られましたが、<25.0>
lola

回答:


378

JavaのFloatクラスを使用します。

float f = Float.parseFloat("25");
String s = Float.toString(25.0f);

比較するには、文字列を浮動小数点数に変換し、2つの浮動小数点数として比較する方が常に優れています。これは、1つの浮動小数点数に対して複数の文字列表現があり、文字列として比較すると異なるためです(たとえば、 "25"!= "25.0"!= "25.00"など)。


これを機能させるために何かをインポートする必要がありますか?私は未定義のタイプ「フロート」を取得します(私は奇妙なJava環境ですが、openhabスクリプトです)
ジョナサン

32

文字列にフロート-String.valueOf()

float amount=100.00f;
String strAmount=String.valueOf(amount);
// or  Float.toString(float)

Floatへの文字列-Float.parseFloat()

String strAmount="100.20";
float amount=Float.parseFloat(strAmount)
// or  Float.valueOf(string)

5

あなたはこのコードのサンプルを試すことができます:

public class StringToFloat
{

  public static void main (String[] args)
  {

    // String s = "fred";    // do this if you want an exception

    String s = "100.00";

    try
    {
      float f = Float.valueOf(s.trim()).floatValue();
      System.out.println("float f = " + f);
    }
    catch (NumberFormatException nfe)
    {
      System.out.println("NumberFormatException: " + nfe.getMessage());
    }
  }
}

ここで見つかりまし


ありがとう-助けてくれた、キャッチビットが必要だった;)
Hein du Plessis

4

次のコードが役立つと思います:

float f1 = 1.23f;
String f1Str = Float.toString(f1);      
float f2 = Float.parseFloat(f1Str);

2

これは可能な答えです。これにより、正確なデータも得られます。必要な形式で小数点を変更するだけです。

パブリッククラスTestStandAlone {

    / **
     * 

この方法はメインです

* @param args void * / public static void main(String [] args){ // TODO自動生成されたメソッドスタブ {を試す フロートf1 = 152.32f; BigDecimal roundfinalPrice = new BigDecimal(f1.floatValue())。setScale(2、BigDecimal.ROUND_HALF_UP); System.out.println( "f1->" + f1); 文字列s1 = roundfinalPrice.toPlainString(); System.out.println( "s1" + s1); }キャッチ(例外e){ // TODO自動生成されたcatchブロック e.printStackTrace(); } } }

出力は

f1-> 152.32
s1 152.32

2

あなたが探しているなら、小数点以下第2位を言いなさい。 Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

この方法は良い方法ではありませんが、簡単で推奨されていません。多分私はこれが最も効果的ではない方法であり、コーディングのやり方は悪いですが、使うのが楽しい、

float val=10.0;
String str=val+"";

空の引用符、変数strにnull文字列を追加し、文字列型に 'val'をアップキャストします。


0
String str = "1234.56";
float num = 0.0f;

int digits = str.length()- str.indexOf('.') - 1;

float factor = 1f;

for(int i=0;i<digits;i++) factor /= 10;

for(int i=str.length()-1;i>=0;i--){

    if(str.charAt(i) == '.'){
        factor = 1;
        System.out.println("Reset, value="+num);
        continue;
    }

    num += (str.charAt(i) - '0') * factor;
    factor *= 10;
}

System.out.println(num);

0

floatをStringに変換するには3つの方法があります

  1. 「」+ f
  2. Float.toString(f)
  3. String.valueOf(f)

文字列を浮動小数点に変換する方法は2つあります

  1. Float.valueOf(str)
  2. Float.parseFloat(str);

例:-

public class Test {

    public static void main(String[] args) {
        System.out.println("convert FloatToString " + convertFloatToString(34.0f));

        System.out.println("convert FloatToStr Using Float Method " + convertFloatToStrUsingFloatMethod(23.0f));

        System.out.println("convert FloatToStr Using String Method " + convertFloatToStrUsingFloatMethod(233.0f));

        float f = Float.valueOf("23.00");
    }

    public static String convertFloatToString(float f) {
        return "" + f;
    }

    public static String convertFloatToStrUsingFloatMethod(float f) {
        return Float.toString(f);
    }

    public static String convertFloatToStrUsingStringMethod(float f) {
        return String.valueOf(f);
    }

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.