java: convertir float en String et String en float

211

Comment pourrais-je convertir un flottant en chaîne ou une chaîne en flottant?

Dans mon cas, je dois faire l'affirmation entre une chaîne de 2 valeurs (valeur que j'ai obtenue de la table) et une valeur flottante que j'ai calculée.

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

J'ai essayé de float à string:

String sSelectivityRate = String.valueOf(valueCalculated );

mais l'assertion échoue

lola
la source
9
vous êtes conscient du fait que les floatvaleurs ne sont jamais précises?
xtofl
1
Voulez-vous les comparer en tant que Stringou en tant que floatvaleurs? Ce n'est pas la même chose. floatest moins précis que l'un doubleet l'autre peut avoir des erreurs d'arrondi à partir des valeurs calculées.
Peter Lawrey
3
google à ne pas confondre avec googol. ;)
Peter Lawrey
Je vous ai essayé la solution et aussi de lunettes mais quand je fais l'affirmation j'ai obtenu: java.lang.AssertionError: attendu: <25> mais était: <25.0>
lola

Réponses:

379

Utilisation de la Floatclasse Java .

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

Pour comparer, il est toujours préférable de convertir la chaîne en float et de comparer en deux floats. En effet, pour un nombre flottant, il existe plusieurs représentations de chaînes, qui sont différentes lorsqu'elles sont comparées en tant que chaînes (par exemple, "25"! = "25.0"! = "25.00", etc.)

Petar Ivanov
la source
Dois-je importer quelque chose pour que cela fonctionne? Je reçois un type non défié 'Float' (je suis dans un environnement java étrange cependant, scripts openhab)
Jonathan
32

Flotter vers la chaîne - String.valueOf ()

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

Chaîne à flotter - Float.parseFloat ()

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

Vous pouvez essayer cet exemple de code:

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

trouvé ici

JMax
la source
Merci - m'a aidé, avait besoin du mors;)
Hein du Plessis
4

Je crois que le code suivant vous aidera:

float f1 = 1.23f;
String f1Str = Float.toString(f1);      
float f2 = Float.parseFloat(f1Str);
omt66
la source
2

Ceci est une réponse possible, cela donnera également les données précises, il suffit de changer le point décimal dans le formulaire requis.

classe public TestStandAlone {

    / **
     * 

Cette méthode consiste à

* @param args void * / public static void main (String [] args) { // TODO Stub de méthode généré automatiquement essayez { Flotteur f1 = 152,32f; BigDecimal roundfinalPrice = new BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); Chaîne s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (Exception e) { // TODO Bloc de capture généré automatiquement e.printStackTrace (); } } }

La sortie sera

f1 -> 152,32
s1 152.32
Anupam
la source
2

Si vous cherchez, dites deux décimales .. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);

RichEarle
la source
1

Eh bien, cette méthode n'est pas bonne, mais facile et non suggérée. Je devrais peut-être dire que c'est la méthode la moins efficace et la pire pratique de codage mais, amusant à utiliser,

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

les guillemets vides, ajoutez une chaîne nulle à la variable str, en actualisant 'val' au type de chaîne.

Anmol Thukral
la source
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
la source
0

Il existe trois façons de convertir float en chaîne.

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

Il existe deux façons de convertir une chaîne en flottant

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

Exemple:-

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
la source