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上点赞或留言,并订阅电子邮件以获取我们的最新信息。