java: convierte float a String y String a float

211

¿Cómo podría convertir de flotante a cadena o de cadena a flotante?

En mi caso, necesito hacer la afirmación entre la cadena de 2 valores (valor que obtuve de la tabla) y el valor flotante que he calculado.

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

Traté de flotar a cuerda:

String sSelectivityRate = String.valueOf(valueCalculated );

pero la afirmación falla

lola
fuente
9
que está consciente de que floatlos valores no son precisas?
xtofl
1
¿Quieres compararlos como Stringo como floatvalores? Esto no es lo mismo. floates menos preciso doubley puede tener errores de redondeo a partir de valores calculados.
Peter Lawrey
3
google no debe confundirse con googol. ;)
Peter Lawrey
Intenté su solución y también desde goggle, pero cuando hago la afirmación obtuve: java.lang.AssertionError: esperado: <25> pero fue: <25.0>
lola

Respuestas:

379

Usando Java Float clase .

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

Para comparar, siempre es mejor convertir la cadena en flotante y compararla como dos flotantes. Esto se debe a que para un número flotante hay varias representaciones de cadenas, que son diferentes cuando se comparan como cadenas (por ejemplo, "25"! = "25.0"! = "25.00", etc.)

Petar Ivanov
fuente
¿Necesito importar algo para que esto funcione? Me sale el tipo indefinido 'Float' (aunque estoy en un entorno extraño de Java, scripts de Openhab)
Jonathan
32

Flotar a cadena - String.valueOf ()

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

Cadena para flotar - Float.parseFloat ()

String strAmount="100.20";
float amount=Float.parseFloat(strAmount)
// or  Float.valueOf(string)
Adatapost
fuente
5

Puedes probar esta muestra de código:

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

encontrado aquí

JMax
fuente
Gracias - me ayudó, necesitaba la trampa;)
Hein du Plessis
4

Creo que el siguiente código ayudará:

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

Esta es una posible respuesta, esto también le dará los datos precisos, solo necesita cambiar el punto decimal en la forma requerida.

TestStandAlone de clase pública {

    / **
     * * 

Este método es principal

* @param args nulo * / public static void main (String [] args) { // TODO Código auxiliar de método generado automáticamente tratar { Flotador f1 = 152.32f; BigDecimal roundfinalPrice = new BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); Cadena s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (Excepción e) { // TODO Bloque de captura generado automáticamente e.printStackTrace (); } } }

La salida será

f1 -> 152,32
s1 152,32
Anupam
fuente
2

Si está buscando, diga dos decimales. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);

RichEarle
fuente
1

bueno, este método no es bueno, pero fácil y no sugerido. Tal vez debería decir que este es el método menos efectivo y la peor práctica de codificación pero, divertido de usar,

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

las comillas vacías, agregue una cadena nula a la cadena variable, elevando 'val' al tipo de cadena.

Anmol Thukral
fuente
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
fuente
0

Hay tres formas de convertir flotante a cadena.

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

Hay dos formas de convertir cadenas en flotantes

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

Ejemplo:-

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
fuente