Java: конвертировать float в String и String для float - PullRequest
201 голосов
/ 26 сентября 2011

Как я могу преобразовать число с плавающей точкой в ​​строку или строку с плавающей точкой?

В моем случае мне нужно сделать утверждение между строкой из 2 значений (значением, полученным из таблицы) и значением, которое у меня естьрассчитано.

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

Я пытался с плавающей запятой на строку:

String sSelectivityRate = String.valueOf(valueCalculated );

, но утверждение не удалось

Ответы [ 8 ]

367 голосов
/ 26 сентября 2011

Использование класса Java Float.

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

Для сравнения всегда лучше преобразовать строку в число с плавающей точкой и сравнить как два числа с плавающей точкой.Это связано с тем, что для одного числа с плавающей запятой существует несколько строковых представлений, которые отличаются по сравнению со строками (например, «25»! = «25.0»! = «25.00» и т. Д.)

32 голосов
/ 26 сентября 2011

Float to string - 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 голосов
/ 26 сентября 2011

Вы можете попробовать этот образец кода:

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

найдено здесь

4 голосов
/ 26 сентября 2011

Я верю, что следующий код поможет:

float f1 = 1.23f;
String f1Str = Float.toString(f1);      
float f2 = Float.parseFloat(f1Str);
2 голосов
/ 20 ноября 2012

Это возможный ответ, он также даст точные данные, просто нужно изменить десятичную точку в необходимой форме.

public class TestStandAlone {

    /**
     * <p>This method is to  main</p>
     * @param args  void
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            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 Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Выход будет

f1 --> 152.32
s1 152.32
1 голос
/ 30 мая 2019

Если вы ищете, скажем, два десятичных знака .. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);

1 голос
/ 24 марта 2016

хорошо, этот метод не очень хороший, но простой и не рекомендуется.Может быть, я должен сказать, что это наименее эффективный метод и худшая практика кодирования, но, забавно использовать,

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

пустые кавычки, добавить пустую строку в переменную str, передав значение val в строкутипа.

0 голосов
/ 12 июня 2018
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);
...