Java Convert String to Float - Java 147

Java Convert String to Float – Java 147

Java Convert String to Float

將 String 轉換為 float 或 Float 是 Java 中常見的操作,可以使用 parseFloat 、 valueOf 等方法進行操作, Java String Float 任務是將該字串轉換為單精度浮點數,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- java_147
       |               +- conversion
       |                   +- string
       |                       +- StringToFloatTest.java   

單元測試

Java String to Float 提供字串轉換成單精度浮點數等操作。

parseFloat

Java String to Float 使用 Float.parseFloat 轉換成單精度浮點數,此方法接受另一個參數來更改基數,例如 16(十六進制)或 2(二進制)。

	@Test
	public void parseFloat() {
		String value = "151.88";
		float result = Float.parseFloat(value);
		System.out.println(result);
		assertEquals(151.88f, result, 0);

		value = "-40.88";
		result = Float.parseFloat(value);
		System.out.println(result);
		assertEquals(-40.88f, result, 0);
	}
151.88
-40.88

parseFloatThrowException

Java String to Float 使用 Float.parseFloat 轉換成單精度浮點數,輸入不合格式的字串,會拋出例外。

	@Test(expected = NumberFormatException.class)
	public void parseFloatThrowException() {
		String value = "151.88";
		float result = Float.parseFloat(value);
		System.out.println(result);
		assertEquals(151.88f, result, 0);

		value = "junit-151.88";
		result = Float.parseFloat(value);
		System.out.println(result);
	}
151.88
java.lang.NumberFormatException: For input string: "junit-151.88"
	at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
	at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
	at java.lang.Float.parseFloat(Float.java:451)
	at org.ruoxue.java_147.string.StringToFloatTest.parseFloatThrowException(StringToFloatTest.java:30)

valueOf

Java String to Float 使用 Float.valueOf 轉換成單精度浮點數。

	@Test
	public void valueOf() {
		String value = "151.88";
		Float result = Float.valueOf(value);
		System.out.println(result);
		assertEquals(151.88f, result.floatValue(), 0);

		value = "-40.88";
		result = Float.valueOf(value);
		System.out.println(result);
		assertEquals(-40.88f, result.floatValue(), 0);
	}
151.88
-40.88

valueOfThrowException

Convert String to Float in Java 使用 Float.valueOf 轉換成單精度浮點數,輸入不合格式的字串,會拋出例外。

	@Test(expected = NumberFormatException.class)
	public void valueOfThrowException() {
		String value = "151.88";
		Float result = Float.valueOf(value);
		System.out.println(result);
		assertEquals(151.88f, result.floatValue(), 0);

		value = "junit-151.88";
		result = Float.valueOf(value);
		System.out.println(result);
	}
151.88
java.lang.NumberFormatException: For input string: "junit-151.88"
	at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
	at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
	at java.lang.Float.parseFloat(Float.java:451)
	at java.lang.Float.valueOf(Float.java:416)
	at org.ruoxue.java_147.string.StringToFloatTest.valueOfThrowException(StringToFloatTest.java:55)

StringToFloatTest.java

Convert String to Float in Java 新增單元測試,驗證是否符合預期。

package org.ruoxue.java_147.conversion.string;

import static org.junit.Assert.*;

import org.junit.Test;

public class StringToFloatTest {

	@Test
	public void parseFloat() {
		String value = "151.88";
		float result = Float.parseFloat(value);
		System.out.println(result);
		assertEquals(151.88f, result, 0);

		value = "-40.88";
		result = Float.parseFloat(value);
		System.out.println(result);
		assertEquals(-40.88f, result, 0);
	}

	@Test(expected = NumberFormatException.class)
	public void parseFloatThrowException() {
		String value = "151.88";
		float result = Float.parseFloat(value);
		System.out.println(result);
		assertEquals(151.88f, result, 0);

		value = "junit-151.88";
		result = Float.parseFloat(value);
		System.out.println(result);
	}

	@Test
	public void valueOf() {
		String value = "151.88";
		Float result = Float.valueOf(value);
		System.out.println(result);
		assertEquals(151.88f, result.floatValue(), 0);

		value = "-40.88";
		result = Float.valueOf(value);
		System.out.println(result);
		assertEquals(-40.88f, result.floatValue(), 0);
	}

	@Test(expected = NumberFormatException.class)
	public void valueOfThrowException() {
		String value = "151.88";
		Float result = Float.valueOf(value);
		System.out.println(result);
		assertEquals(151.88f, result.floatValue(), 0);

		value = "junit-151.88";
		result = Float.valueOf(value);
		System.out.println(result);
	}
}

心得分享

String to Float in Java 轉換方法 parseFloat 和 valueOf 似乎完全相同,分別傳回基本型別 float 及物件 Float , valueOf 方法在內部委託給 parseFloat 方法, Convert String to Float in Java 提供將 String 實例轉換為 float 或 Float 實例的多種方法。

發佈留言