java: converte float in String e String in float


211

Come posso convertire da float a stringa o da stringa a galleggiante?

Nel mio caso ho bisogno di fare l'affermazione tra 2 valori stringa (valore che ho ottenuto dalla tabella) e valore float che ho calcolato.

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

Ho provato da float a stringa:

String sSelectivityRate = String.valueOf(valueCalculated );

ma l'affermazione fallisce


9
si è consapevoli del fatto che floati valori non sono mai precisi?
xtofl,

1
Vuoi confrontarli come Stringo come floatvalori? Questa non è la stessa cosa floatè meno preciso di doubleed entrambi possono avere errori di arrotondamento dai valori calcolati.
Peter Lawrey,

3
google da non confondere con googol. ;)
Peter Lawrey,

Ho provato la tua soluzione e anche dalla maschera ma quando ho fatto l'asserzione ho avuto: java.lang.AssertionError: previsto: <25> ma era: <25.0>
lola

Risposte:


379

Usando la Floatclasse Java .

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

Per confrontare è sempre meglio convertire la stringa in float e confrontarla come due float. Questo perché per un numero float ci sono più rappresentazioni di stringa, che sono diverse se confrontate come stringhe (ad es. "25"! = "25.0"! = "25.00" ecc.)


Devo importare qualcosa affinché funzioni? Ottengo un tipo indefinito 'Float' (sono in uno strano ambiente Java, script openhab)
Jonathan,

32

Float su stringa - 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

Puoi provare questo esempio di codice:

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

trovato qui


Grazie - mi ha aiutato, aveva bisogno del morso;)
Hein du Plessis il

4

Credo che il seguente codice aiuterà:

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

2

Questa è una possibile risposta, questo fornirà anche i dati precisi, basta cambiare il punto decimale nel modulo richiesto.

TestStandAlone di classe pubblica {

    / **
     * 

Questo metodo è quello principale

* @param args void * / public static void main (String [] args) { // TODO Stub del metodo generato automaticamente provare { 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 (Exception e) { // TODO Blocco catch generato automaticamente e.printStackTrace (); } } }

L'output sarà

f1 -> 152.32
s1 152.32

2

Se stai cercando, pronuncia due cifre decimali ... Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

bene questo metodo non è buono, ma facile e non consigliato. Forse dovrei dire che questo è il metodo meno efficace e la pratica di codifica peggiore ma, divertente da usare,

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

tra virgolette vuote, aggiungi una stringa null alla variabile str, eseguendo l'upgrade di 'val' al tipo di stringa.


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

Esistono tre modi per convertire float in String.

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

Esistono due modi per convertire String in float

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

Esempio:-

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

}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.