java: перетворити float в String і String в float


211

Як я міг перетворити з float в string або string в float?

У моєму випадку мені потрібно зробити твердження між двома рядками значень (значення, яке я отримав з таблиці) і значенням float, яке я обчислив.

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

Я намагався від float до string:

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

Плавати в рядок - 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 аргументи недійсні * / 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); Рядок s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } улов (виняток е) { // TODO Автоматично створений блок лову e.printStackTrace (); } } }

Вихід буде

f1 -> 152,32
s1 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 (f)
  3. String.valueOf (f)

Є два способи перетворення рядка в плаваючий

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

Приклад: -

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.