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


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


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)

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


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

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

2

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


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.


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

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

}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.