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

Lola
quelle
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.).

Petar Ivanov
quelle
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)
Adatapost
quelle
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

JMax
quelle
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);
omt66
quelle
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
Anupam
quelle
2

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

RichEarle
quelle
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.

Anmol Thukral
quelle
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);
gpa
quelle
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);
    }

}
Neeraj Gahlawat
quelle