Java text to float

Преобразование строки в число с плавающей запятой и обратно в Java

Преобразование данных из Float в String и наоборот — обычная операция в Java. Однако множество способов сделать это может вызвать путаницу и неуверенность в выборе.

В этой статье мы продемонстрируем и сравним все доступные варианты.

2. Поплавок в строку ​

Во-первых, давайте рассмотрим наиболее распространенные способы преобразования значений Float в String .

2.1. Конкатенация строк ​

Самое простое решение, которое мы можем использовать, — это объединение значения с плавающей запятой с пустой строкой .

Давайте посмотрим на пример:

 float givenFloat = 1.25f;    String result = givenFloat + "";    assertEquals("1.25", result); 

Точно так же мы можем добавить объект Float к пустой строке и получить тот же результат. Когда мы используем объект Float , его метод toString() вызывается автоматически:

 Float givenFloat = 1.25f;    String result = givenFloat + "";    assertEquals("1.25", result); 

Если объект Float имеет значение null, результатом конкатенации будет «нулевая» строка :

 Float givenFloat = null;    String result = givenFloat + "";    assertEquals("null", result); 

2.2. Поплавок.toString() ​

Другой вариант, который мы можем использовать, — это статический метод toString() класса Float для преобразования строк . Мы можем передать либо примитивное значение float , либо объект Float в метод toString() :

 Float givenFloat = 1.25f;    String result = Float.toString(givenFloat);    assertEquals("1.25", result); 

Если мы передадим null в качестве аргумента метода, мы получим исключение NullPointerException во время выполнения:

 Float givenFloat = null;    assertThrows(NullPointerException.class, () -> Float.toString(givenFloat)); 

2.3. String.valueOf() ​

Точно так же мы можем использовать статический метод valueOf String : «

 Float givenFloat = 1.25f;    String result = String.valueOf(givenFloat);    assertEquals("1.25", result); 

В отличие от Float.toString() , String.valueOf() не будет генерировать исключение, если мы передаем null в качестве аргумента, вместо этого возвращается «null» String :

 Float givenFloat = null;    String result = String.valueOf(givenFloat);    assertEquals("null", result); 

2.4. Строка.формат() ​

` Статический метод format() строки` предоставляет нам дополнительные параметры форматирования. Мы должны знать, что без ограничения количества десятичных знаков результат будет содержать конечные нули, даже если нет дробной части, как мы можем видеть в следующем примере:

 Float givenFloat = 1.25f;    String result = String.format("%f", givenFloat);    assertEquals("1.250000", result); 

Когда мы форматируем число с плавающей запятой, указав количество знаков после запятой, метод format() также округляет результат :

 Float givenFloat = 1.256f;    String result = String.format("%.2f", givenFloat);    assertEquals("1.26", result); 

Если мы передаем null Float , то преобразованный результат будет «null» String :

 Float givenFloat = null;    String result = String.format("%f", givenFloat);    assertEquals("null", result); 

2.5. Десятичный формат ​

Наконец, у класса DecimalFormat есть метод format() , который позволяет преобразовывать значения с плавающей запятой в строки с пользовательским форматированием . Преимущество в том, что мы можем точно определить, сколько десятичных знаков мы хотим получить в результирующей строке .

Давайте посмотрим, как это использовать на примере:

 Float givenFloat = 1.25f;    String result = new DecimalFormat("#.0000").format(givenFloat);    assertEquals("1.2500", result); 

Если после применения форматирования дробной части нет, DecimalFormat вернет целое число :

 Float givenFloat = 1.0025f;    String result = new DecimalFormat("#.##").format(givenFloat);    assertEquals("1", result); 

Если мы передадим null в качестве аргумента, то получим исключение IllegalArgumentException :

 Float givenFloat = null;    assertThrows(IllegalArgumentException.class, () -> new DecimalFormat("#.000").format(givenFloat)); 

3. Строка для плавания ​

Далее давайте рассмотрим наиболее распространенные способы преобразования значений String в Float .

3.1. Поплавок.parseFloat() ​

Одним из наиболее распространенных способов является использование статического метода класса Float : parseFloat() . Он вернет примитивное значение с плавающей запятой , представленное строковым аргументом . Кроме того, начальные и конечные пробелы игнорируются:

 String givenString = "1.25";    float result = Float.parseFloat(givenString);    assertEquals(1.25f, result); 

Мы получаем исключение NullPointerException , если аргумент String равен нулю:

 String givenString = null;    assertThrows(NullPointerException.class, () -> Float.parseFloat(givenString)); 

Если аргумент String не содержит анализируемого числа с плавающей запятой , мы получаем исключение NumberFormatException:

 String givenString = "1.23x";    assertThrows(NumberFormatException.class, () -> Float.parseFloat(givenString)); 

3.2. Float.valueOf() ​

Точно так же мы можем использовать статический метод valueOf() класса Float . Разница в том, что valueOf() возвращает объект Float . В частности, он вызывает метод parseFloat() и упаковывает его в объект Float : ** ** «

 String givenString = "1.25";    Float result = Float.valueOf(givenString);    assertEquals(1.25f, result); 

Точно так же, если мы передаем не анализируемую String , мы получим NumberFormatException :

 String givenString = "1.25x";    assertThrows(NumberFormatException.class, () -> Float.valueOf(givenString)); 

3.3. Десятичный формат ​

Мы также можем использовать DecimalFormat для преобразования String в Float . Одним из основных преимуществ является указание пользовательских разделителей десятичной точки .

 String givenString = "1,250";   DecimalFormatSymbols symbols = new DecimalFormatSymbols();  symbols.setDecimalSeparator(',');   DecimalFormat decimalFormat = new DecimalFormat("#.000");  decimalFormat.setDecimalFormatSymbols(symbols);    Float result = decimalFormat.parse(givenString).floatValue();    assertEquals(1.25f, result); 

3.4. Конструктор поплавка​

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

 String givenString = "1.25";    Float result = new Float(givenString);    assertEquals(1.25f, result); 

Начиная с Java 9, этот конструктор устарел. Вместо этого мы должны рассмотреть возможность использования других статических фабричных методов, таких как parseFloat() или valueOf() .

4. Вывод​

В этой статье мы рассмотрели несколько способов преобразования экземпляров String в экземпляры float или Float и обратно.

Для простых преобразований конкатенация String и Float.toString() были бы предпочтительными вариантами преобразования в String . Если нам нужно более сложное форматирование, то DecimalFormat — лучший инструмент для этой работы. Для преобразования строк в значения с плавающей запятой мы можем использовать Float.parseFloat() , если нам нужен примитив с плавающей запятой , или Float.valueOf() , если мы предпочитаем объект Float . Точно так же для пользовательского форматирования лучше всего подходит DecimalFormat .

Как всегда, код этих примеров доступен на GitHub .

  • 1. Введение
  • 2. Поплавок в строку
    • 2.1. Конкатенация строк
    • 2.2. Поплавок.toString()
    • 2.3. String.valueOf()
    • 2.4. Строка.формат()
    • 2.5. Десятичный формат
    • 3.1. Поплавок.parseFloat()
    • 3.2. Float.valueOf()
    • 3.3. Десятичный формат
    • 3.4. Конструктор поплавка

    Источник

    Converting Between Numbers and Strings

    Frequently, a program ends up with numeric data in a string object—a value entered by the user, for example.

    The Number subclasses that wrap primitive numeric types ( Byte , Integer , Double , Float , Long , and Short ) each provide a class method named valueOf that converts a string to an object of that type. Here is an example, ValueOfDemo , that gets two strings from the command line, converts them to numbers, and performs arithmetic operations on the values:

    public class ValueOfDemo < public static void main(String[] args) < // this program requires two // arguments on the command line if (args.length == 2) < // convert strings to numbers float a = (Float.valueOf(args[0])).floatValue(); float b = (Float.valueOf(args[1])).floatValue(); // do some arithmetic System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("a / b = " + (a / b)); System.out.println("a % b = " + (a % b)); >else < System.out.println("This program " + "requires two command-line arguments."); >> >

    The following is the output from the program when you use 4.5 and 87.2 for the command-line arguments:

    a + b = 91.7 a - b = -82.7 a * b = 392.4 a / b = 0.0516055 a % b = 4.5

    Note: Each of the Number subclasses that wrap primitive numeric types also provides a parseXXXX() method (for example, parseFloat() ) that can be used to convert strings to primitive numbers. Since a primitive type is returned instead of an object, the parseFloat() method is more direct than the valueOf() method. For example, in the ValueOfDemo program, we could use:

    float a = Float.parseFloat(args[0]); float b = Float.parseFloat(args[1]);

    Converting Numbers to Strings

    Sometimes you need to convert a number to a string because you need to operate on the value in its string form. There are several easy ways to convert a number to a string:

    int i; // Concatenate "i" with an empty string; conversion is handled for you. String s1 = "" + i;
    // The valueOf class method. String s2 = String.valueOf(i);

    Each of the Number subclasses includes a class method, toString() , that will convert its primitive type to a string. For example:

    int i; double d; String s3 = Integer.toString(i); String s4 = Double.toString(d);

    The ToStringDemo example uses the toString method to convert a number to a string. The program then uses some string methods to compute the number of digits before and after the decimal point:

    public class ToStringDemo < public static void main(String[] args) < double d = 858.48; String s = Double.toString(d); int dot = s.indexOf('.'); System.out.println(dot + " digits " + "before decimal point."); System.out.println( (s.length() - dot - 1) + " digits after decimal point."); >>

    The output of this program is:

    3 digits before decimal point. 2 digits after decimal point.

    Источник

    String to Float in Java

    Java Course - Mastering the Fundamentals

    In Java, we can convert string to floating point numbers using various techniques. The different techniques to convert string to float in java are:

    Introduction

    We usually convert string to float in Java when we have to perform mathematical operations on string data containing floating-point numbers. The different ways to convert strings to float are:

    Let us learn each of these methods with the following examples.

    Examples of Java String to float

    Example 1: Java String to Float Using Float.valueOf() method

    The valueOf() method is a static method in the java.lang.Float class that is used to convert string to float in java. It accepts a string as input and converts it to a float value.

    Output of the above program:

    Explanation:

    In the above example, we used the valueOf() method to convert a string value to a float value.

    If the string passed as input to the valueOf() method is not a valid number, the compiler will throw NumberFormatException , and if null is passed as the input, the compiler will throw NullPointerException .

    Example 2: Java String to Float Using Float.parseFloat() method

    The parseFloat() method is a static method of Float class used to convert string to float in java. It takes the string to be parsed as its input and returns the float type of the string. If the string can not be converted to float, it throws a runtime exception.

    Note: In the code below, we have used try-catch block to show the exceptions thrown by parseFloat() method in Java.

    Output of the above program:

    Explanation:

    • In the above example, we used the parseFloat() method to convert a string value to a float value.
    • We tried to convert three different strings into float values using the parseFloat() function. Because parseFloat() was unable to convert null and «five» to float , it generated an exception.
    • When input string is «five» , NumberFormatException is generated. When null is provided as input, NullPointerException is thrown.
    • We used the try-catch statement to catch and print the exception message generated by parseFloat() .

    Difference Between Float.parseFloat() and Float.valueOf() Methods:

    The parseFloat() method returns a float value by parsing a string as input. On the other hand, the valueOf() method returns a float object that is initialized with the value provided as the input.

    Example 3: Java String to Float Using Constructor

    In the java.lang.Float class, we have a constructor that takes a string value as its argument and creates a Float object of this string.

    Output of the above program:

    In the above example, we used the Float class constructor to convert a string to a float value.

    Example 4: Java String to Float using java.text.DecimalFormat Class

    The DecimalFormat class can be used to convert string to floats as well.

    Explanation:

    • In the above example, we used the DecimalFormat class to convert string to float.
    • We first created an instance df of this class. Then, we parsed the string value into the instance df and used the floatValue() method to convert the string into float.

    Conclusion

    • Strings can be converted to floating point numbers using different methods in Java.
    • The different methods used to convert strings to float are: the valueOf() method, the parseFloat() method, Float class constructor, and the DecimalFormat class.
    • The parseFloat() method returns a float value, whereas the valueOf() method returns a Float object.

    Источник

    Читайте также:  Css select button styling
Оцените статью