java bigdecimal to string

时间:2020-02-23 14:34:56  来源:igfitidea点击:

在本教程中,我们将看到如何在Java中将BigDecimal转换为String。

有许多方法可以将大型java中的字符串转换为字符串。
他们之中有一些是:

  • 使用toString()
  • 使用string.valueof()

ToString方法

我们可以简单地使用BigDecimal的ToString方法将BigDecimal转换为String。

package org.igi.theitroad;
 
import java.math.BigDecimal;
 
public class BigDecimalToStringMain {
 
	public static void main(String[] args) {
		BigDecimal bigDecimal=new BigDecimal("20.234");
		String toStringBigDec=bigDecimal.toString();
		System.out.println(toStringBigDec);
	}
}

运行上面的程序时,我们将得到以下输出:

20.234

字符串的ValueOf方法

我们还可以使用字符串的valueOf()方法将BigDecimal转换为String,但内部使用BigDecimal的ToString方法,因此最好使用BigDecimal的ToString方法

package org.igi.theitroad;
 
import java.math.BigDecimal;
 
public class BigDecimalToStringMain {
 
	public static void main(String[] args) {
		BigDecimal bigDecimal=new BigDecimal("20.234");
		String valueOfBigDec=String.valueOf(bigDecimal);
		System.out.println(valueOfBigDec);
	}
}

运行上面的程序时,我们将得到以下输出:

20.234

使用toString的问题

当使用BigDecimal构造函数时,我们可能无法找到预期的结果,该构造函数将double作为参数。
例如:

package org.igi.theitroad;
 
import java.math.BigDecimal;
 
public class BigDecimalToStringMain {
 
	public static void main(String[] args) {
		BigDecimal bigDecimal=new BigDecimal(20.234);
		String toStringBigDec=bigDecimal.toString();
		System.out.println(toStringBigDec);
	}
}

运行上面的程序时,我们将得到以下输出:

20.23400000000000176214598468504846096038818359375

我们是否只是预期20.234作为输出?
我想是的。
但问题是当我们使用Tave Double作为参数的BigDecimal构造函数时,Double不能恰好代表20.234.
我们需要使用基于字符串的构造函数或者使用BigDecimal.ValueOf方法来解决此问题。
我们已经在上面示例中已经看到基于String的构造函数。

package org.igi.theitroad;
 
import java.math.BigDecimal;
 
public class BigDecimalToStringMain {
 
	public static void main(String[] args) {
		
		String toStringBigDec=BigDecimal.valueOf(20.234).toString();
		System.out.println(toStringBigDec);
	}
}

运行上面的程序时,我们将得到以下输出:

20.234