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

    • 476
  • 私信
     21,948