java: konvertiere float in String und String in float


211

Wie kann ich von float in string oder string in float konvertieren?

In meinem Fall muss ich die Zusicherung zwischen 2 Zeichenfolgen (Wert, den ich aus der Tabelle erhalten habe) und Gleitkommawert machen, den ich berechnet habe.

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

Ich habe versucht, von float zu string:

String sSelectivityRate = String.valueOf(valueCalculated );

aber die Behauptung schlägt fehl


9
Sie sind sich bewusst , dass floatWerte nicht genau sind?
xtofl

1
Möchten Sie sie als Stringoder als floatWerte vergleichen? Das ist nicht dasselbe. floatist weniger genau als doubleund kann Rundungsfehler aus berechneten Werten aufweisen.
Peter Lawrey

3
Google nicht mit Googol zu verwechseln. ;)
Peter Lawrey

Ich habe versucht, Sie Lösung und auch von Brille, aber als ich die Behauptung machen, bekam ich: java.lang.AssertionError: erwartet: <25> aber war: <25.0>
lola

Antworten:


378

Verwenden der Java- FloatKlasse.

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

Zum Vergleich ist es immer besser, den String in float umzuwandeln und als zwei float zu vergleichen. Dies liegt daran, dass es für eine Gleitkommazahl mehrere Zeichenfolgendarstellungen gibt, die sich im Vergleich zu Zeichenfolgen unterscheiden (z. B. "25"! = "25.0"! = "25.00" usw.).


Muss ich etwas importieren, damit dies funktioniert? Ich bekomme undefinierten Typ 'Float' (ich bin in einer seltsamen Java-Umgebung, Openhab-Skripte)
Jonathan

32

Float to string - String.valueOf ()

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

String to Float - Float.parseFloat ()

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

5

Sie können dieses Codebeispiel ausprobieren:

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());
    }
  }
}

hier gefunden


Danke - hat mir geholfen, brauchte das Fangbit;)
Hein du Plessis

4

Ich glaube, der folgende Code wird helfen:

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

2

Dies ist eine mögliche Antwort, dies gibt auch die genauen Daten, müssen nur den Dezimalpunkt in der erforderlichen Form ändern.

öffentliche Klasse TestStandAlone {

    / **
     * * 

Diese Methode ist zu main

* @param args void * / public static void main (String [] args) { // TODO Automatisch generierter Methodenstub Versuchen { Float f1 = 152,32f; BigDecimal roundfinalPrice = new BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); String s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (Ausnahme e) { // TODO Automatisch generierter Fangblock e.printStackTrace (); }} }} }}

Ausgabe wird sein

f1 -> 152,32
s1 152,32

2

Wenn Sie suchen, sagen Sie zwei Dezimalstellen .. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

Nun, diese Methode ist nicht gut, aber einfach und nicht empfohlen. Vielleicht sollte ich sagen, dass dies die am wenigsten effektive Methode und die schlechtere Codierungspraxis ist, aber es macht Spaß, sie zu verwenden.

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

Fügen Sie bei leeren Anführungszeichen der Variablen str eine Nullzeichenfolge hinzu und senden Sie 'val' an den Zeichenfolgentyp.


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

Es gibt drei Möglichkeiten, float in String umzuwandeln .

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

Es gibt zwei Möglichkeiten, String in Float umzuwandeln

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

Beispiel:-

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

}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.