java: konwersja float na String i String na float


211

Jak mogę przekonwertować z float na string lub string na float?

W moim przypadku muszę wykonać twierdzenie między ciągiem 2 wartości (wartością, którą mam z tabeli) a wartością zmienną, którą obliczyłem.

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

Próbowałem od float do string:

String sSelectivityRate = String.valueOf(valueCalculated );

ale twierdzenie się nie powiedzie


9
Ci świadomi, że floatwartości nie są precyzyjne?
xtofl,

1
Czy chcesz je porównać Stringjako floatwartości? To nie to samo. floatjest mniej dokładny doublei oba mogą mieć błędy zaokrąglania na podstawie obliczonych wartości.
Peter Lawrey,

3
google nie należy mylić z googol. ;)
Peter Lawrey

Próbowałem rozwiązania, a także z gogli, ale kiedy stwierdziłem, otrzymałem: java.lang.AssertionError: oczekiwany: <25>, ale był: <25.0>
lola

Odpowiedzi:


379

Korzystanie z Floatklasy Java .

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

Aby porównać, zawsze lepiej jest przekonwertować ciąg na zmiennoprzecinkowy i porównać jako dwa zmiennoprzecinkowe. Jest tak, ponieważ dla jednego numeru zmiennoprzecinkowego istnieje wiele reprezentacji ciągów, które różnią się w porównaniu z łańcuchami (np. „25”! = „25,0”! = „25,00” itp.)


Czy muszę coś zaimportować, aby to działało? Dostaję niezdefiniowany typ „Float” (jestem jednak w dziwnym środowisku Java, skrypty openhab)
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

Możesz wypróbować ten przykład kodu:

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

znaleziono tutaj


Dzięki - pomógł mi, potrzebowałem haczyka;)
Hein du Plessis

4

Wierzę, że następujący kod pomoże:

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

2

Jest to możliwa odpowiedź, da to również dokładne dane, wystarczy zmienić przecinek dziesiętny w wymaganej formie.

TestStandAlone klasy publicznej {

    / **
     * 

Ta metoda jest główna

* @param twierdzi, że jest nieważny * / public static void main (String [] args) { // TODO Metoda automatycznego generowania kodu pośredniczącego próbować { Pływak 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 (wyjątek e) { // TODO Automatycznie wygenerowany blok catch e.printStackTrace (); } } }

Wyjście będzie

f1 -> 152,32
s1 152,32

2

Jeśli szukasz, powiedz dwa miejsca po przecinku ... Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

cóż, ta metoda nie jest dobra, ale łatwa i nie sugerowana. Może powinienem powiedzieć, że jest to najmniej skuteczna metoda i najgorsza praktyka kodowania, ale fajna w użyciu,

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

puste cytaty, dodaj ciąg pusty do zmiennej str, upcasting „val” do typu ciągu.


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

Istnieją trzy sposoby konwersji float na String.

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

Istnieją dwa sposoby przekonwertowania ciągu na zmiennoprzecinkowe

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

Przykład:-

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

}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.