Java: конвертировать float в String и String для float


211

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

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

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

Я пытался из поплавка в строку:

String sSelectivityRate = String.valueOf(valueCalculated );

но утверждение неверно


9
Вы в курсе , что floatценности никогда не точны?
xtofl

1
Вы хотите сравнить их как Stringили как floatзначения? Это не одно и то же. floatявляется менее точным, чем doubleи любой из них может иметь ошибки округления из рассчитанных значений.
Питер Лори

3
Google не следует путать с Googol. ;)
Питер Лори

Я попробовал ваше решение, а также из goggle, но когда я сделал утверждение, я получил: java.lang.AssertionError: ожидаемый: <25>, но был: <25.0>
lola

Ответы:


379

Используя Floatкласс Java .

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

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


Нужно ли импортировать что-то, чтобы это работало? Я получаю неопределенный тип 'Float' (хотя я в странной среде Java, сценарии openhab)
Джонатан,

32

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

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

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

нашел здесь


Спасибо - помог мне, нужен был улов;)
Hein du Plessis

4

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

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

2

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

открытый класс TestStandAlone {

    / **
     * 

Этот метод является основным

* @param args void * / public static void main (String [] args) { // TODO Автоматически сгенерированный метод заглушки пытаться { Поплавок f1 = 152,32f; BigDecimal roundfinalPrice = новый BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); String s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (исключение e) { // TODO автоматически сгенерированный блок catch e.printStackTrace (); } } }

Выход будет

f1 -> 152,32
с1 152,32

2

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


1

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

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

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


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

Есть три способа конвертировать float в String.

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

Есть два способа конвертировать String для плавания

  1. Float.valueOf (ул)
  2. Float.parseFloat (ул);

Пример:-

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

}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.