在java中如何将BigDecimal转换为String/从String转换为BigDecimal的例子

2,167 阅读3分钟

在这篇博文中,我们将学习BigInteger转换的例子,包括

  • 如何从BigDecimal转换为String
  • 如何将BigDecimal转换为String

java.math.BigDecimal class in java

这是一种数据类型,可用于财务和ERP应用中,在这些应用中,数字的精度很重要。BigDecimal用于存储算术运算后的数字的四舍五入。它是一个不可变的类型。

BigDecimal 是在java语言的 java.math包中声明的一个类。

如何在java中创建一个BigDecimal?

可以使用带有字符串或双倍参数的构造函数来创建对象。

一个例子

BigDecimal bigDecimal = new BigDecimal("147.87932");  
System.out.println(bigDecimal);  

BigDecimal bigDecimal1 = new BigDecimal(147.87932);  
System.out.println(bigDecimal1);  

输出

147.87932  
147.8793200000000069849193096160888671875  

第一个,使用带有字符串值的构造函数创建一个对象,并返回正确的实际值。

第二种是使用带双倍值的构造函数创建,147.87932被转换为最接近的双倍值147.8793200000000069849193096160888671875。

希望你能理解在java中是如何创建BigDecimal对象的。

如何在java中把BigDecimal转换为String,并举例说明?

在Java中,我们可以通过多种方式将BigDecimal转换为String。
首先是使用toString方法,其次是toEngineeringString方法。最后是简单的toPlainString方法

使用toString()方法。

toString() 方法在任何扩展了java.lang.object类的java类中都可以使用。它将数字字符串作为字符串输出。

语法:

BigDecimal.toString()

code:

MathContext m = new MathContext(3);  
BigDecimal bg = new BigDecimal("3617E+4", m);  
System.out.println(bg.toString());  
BigDecimal bd3 = new BigDecimal("567.12345678901234561243");  
System.out.println(bd3.toString());  

输出:

3.62E+7  
567.12345678901234561243  

使用toEngineeringString()方法

这种方法的转换也很简单。

函数toEngineeringString() ,返回一个没有exponent 字段的Bigdecimal 对象的String值。然而,与函数toString()方法相比,这种方法并不能返回正确的scale 值。

语法:

public String toEngineeringString()

下面是一个完整的例子

MathContext m = new MathContext(3);  
BigDecimal bg = new BigDecimal("3617E+4", m);  
System.out.println(bg.toEngineeringString());  
BigDecimal bd3 = new BigDecimal("567.12345678901234561243");  
System.out.println(bd3.toEngineeringString());  

输出:

36.2E+6  
567.12345678901234561243  

使用toPlainString()方法

第三,是toPlainString() ,它返回一个没有exponent 字段的bigdecimal 对象的普通字符串。

语法:

public String toPlainString()
MathContext m = new MathContext(3);  
BigDecimal bg = new BigDecimal("3617E+4", m);  
System.out.println(bg.toPlainString());  
BigDecimal bd3 = new BigDecimal("567.12345678901234561243");  
System.out.println(bd3.toPlainString());  

输出:

36200000  
567.12345678901234561243  

String valueOf()方法

这是一个简单的方法,Java中的String.valueOf()函数返回任何类别的字符串表示。

语法:

String.valueOf(AnyObject)

输入参数:

  • 类中的任何对象,如BigDecimal 返回。
  • 所提供对象的字符串版本,在本例中是BigDecimal对象。

例子:

MathContext mc = new MathContext(3);  
BigDecimal bd = new BigDecimal("1237E+4", mc);  
System.out.println(String.valueOf(bd));  
BigDecimal bd1 = new BigDecimal("123.12345678901234561243");  
System.out.println(String.valueOf(bd1));  

输出:

1.24E+7  
123.12345678901234561243  

如何在Java中把字符串转换为BigDecimal?

从一个给定的字符串转换为BigDecimal是非常容易的,简单的方法是使用BigDecimal constructor

语法:

BigDecimal(String)

这个构造函数接受字符串值,其中字符串是一个用双引号括起来的数字。

如果给定的数字不是一个用字符串括起来的数字,就会产生NumberFormatException运行时错误。

String stringObject="123.45";  
BigDecimal bigDecimalObject=new BigDecimal(stringObject);  
System.out.println(bigDecimalObject);  

输出:

123.45  

NumberFormatException错误
当字符串包含非数字字符时,这个问题就会出现。

String stringObject="123.45";  
BigDecimal bigDecimalObject=new BigDecimal(stringObject);  
System.out.println(bigDecimalObject);  

并且输出为

Exception in thread "main" java.lang.NumberFormatException  

结论

修复方法是:BigDecimal将转换只包含数字的字符串。尽量避免只包含非数字字符的字符串。

希望你能理解java中字符串和biginteger的转换。请在facebook/twitter上点赞或留言,并订阅电子邮件以获取我们的最新信息。