java: converte float em String e String em float

211

Como eu poderia converter de float para string ou string para float?

No meu caso, preciso fazer a asserção entre 2 valores (valor que obtive da tabela) e valor flutuante que calculei.

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

Eu tentei de float para string:

String sSelectivityRate = String.valueOf(valueCalculated );

mas a afirmação falha

lola
fonte
9
você está ciente de que os floatvalores nunca são precisos?
Xtofl 26/09/11
1
Deseja compará-los como Stringou como floatvalores? Isto não é a mesma coisa. floaté menos preciso doublee pode ter erros de arredondamento dos valores calculados.
Peter Lawrey
3
google para não ser confundido com googol. ;)
Peter Lawrey
Tentei lhe solução e também de óculos, mas quando eu fazer a afirmação que eu tenho: java.lang.AssertionError: esperado: <25>, mas foi: <25,0>
lola

Respostas:

378

Usando a Floatclasse Java .

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

Para comparar, é sempre melhor converter a string para flutuar e comparar como duas flutuações. Isso ocorre porque, para um número flutuante, há várias representações de strings, que são diferentes quando comparadas às strings (por exemplo, "25"! = "25,0"! = "25,00" etc.)

Petar Ivanov
fonte
Preciso importar algo para que isso funcione? I get 'Float' undefied tipo (estou em um ambiente java estranho, porém, roteiros openhab)
Jonathan
32

Flutuar para string - String.valueOf ()

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

String para Float - Float.parseFloat ()

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

Você pode tentar este exemplo 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 aqui

JMax
fonte
Graças - me ajudou, precisava de pouco captura;)
Hein du Plessis
4

Acredito que o seguinte código ajudará:

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

Esta é uma resposta possível, isso também fornecerá os dados precisos, basta alterar o ponto decimal no formulário necessário.

classe pública TestStandAlone {

    / **
     * 

Este método é o principal

* @param args void * / public static void main (String [] args) { // TODO Stub do método gerado automaticamente experimentar { Flutuador f1 = 152,32f; BigDecimal roundfinalPrice = novo BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); String s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } captura (exceção e) { // TODO Bloco de captura gerado automaticamente e.printStackTrace (); } } }

A saída será

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

Se você estiver procurando, diga duas casas decimais. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);

RichEarle
fonte
1

bem, esse método não é bom, mas fácil e não sugerido. Talvez eu deva dizer que este é o método menos eficaz e a pior prática de codificação, mas, divertido de usar,

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

as aspas vazias, adicione uma string nula à variável str, upcasting 'val' ao tipo de string.

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

Existem três maneiras de converter float em String.

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

Existem duas maneiras de converter String para flutuar

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

Exemplo:-

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
fonte