`

BigDecimal用法 & NumberFormat用法

    博客分类:
  • Java
 
阅读更多
BigDecimal用法http://www.cnblogs.com/linjiqin/p/3413894.html

一、简介
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。


二、构造器描述
BigDecimal(int)       创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。
BigDecimal(long)    创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。


三、方法描述
add(BigDecimal)        BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal)     BigDecimal对象中的值相除,然后返回这个对象。
toString()                将BigDecimal对象的数值转换成字符串。
doubleValue()          将BigDecimal对象中的值以双精度数返回。
floatValue()             将BigDecimal对象中的值以单精度数返回。
longValue()             将BigDecimal对象中的值以长整数返回。
intValue()               将BigDecimal对象中的值以整数返回。


四、格式化及例子
由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。

以利用BigDecimal对货币和百分比格式化为例。首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比。
public static void main(String[] args) {
    NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用 
    NumberFormat percent = NumberFormat.getPercentInstance();  //建立百分比格式化引用 
    percent.setMaximumFractionDigits(3); //百分比小数点最多3位 
    
    BigDecimal loanAmount = new BigDecimal("15000.48"); //贷款金额
    BigDecimal interestRate = new BigDecimal("0.008"); //利率   
    BigDecimal interest = loanAmount.multiply(interestRate); //相乘

    System.out.println("贷款金额:\t" + currency.format(loanAmount)); 
    System.out.println("利率:\t" + percent.format(interestRate)); 
    System.out.println("利息:\t" + currency.format(interest)); 
}

运行结果如下:

贷款金额:    ¥15,000.48
利率:    0.8%
利息:    ¥120.00
五、BigDecimal比较
BigDecimal是通过使用compareTo(BigDecimal)来比较的,具体比较情况如下:
public static void main(String[] args) {
    BigDecimal a = new BigDecimal("1");
    BigDecimal b = new BigDecimal("2");
    BigDecimal c = new BigDecimal("1");
    int result1 = a.compareTo(b);
    int result2 = a.compareTo(c);
    int result3 = b.compareTo(a);
    System.out.println(result1);
    System.out.println(result2);
    System.out.println(result3);
    
}

打印结果是:-1、0、1,即左边比右边数大,返回1,相等返回0,比右边小返回-1。
注意不能使用equals方法来比较大小。



NumberFormat用法http://blog.csdn.net/pengchua/article/details/1956810
NumberFormat 是所有数值格式的抽象基类。 该类提供了格式化和分析数值的接口。 NumberFormat 也提供了确定

哪个语言环境具有数值格式以及它们名字的方法。

package com.discursive.jccook.collections;

import java.text.NumberFormat;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Double myNumber=23323.3323232323;
  Double test=0.3434;
  //getInstance() 
  //返回当前缺省语言环境的缺省数值格式。
  String myString = NumberFormat.getInstance().format(myNumber);
  System.out.println(myString);
  //getCurrencyInstance()返回当前缺省语言环境的通用格式
  myString = NumberFormat.getCurrencyInstance().format(myNumber); 
  System.out.println(myString);
  //getNumberInstance() 返回当前缺省语言环境的通用数值格式。 
  myString = NumberFormat.getNumberInstance().format(myNumber); 
  System.out.println(myString);
  
  //getPercentInstance()  返回当前缺省语言环境的百分比格式。
  myString = NumberFormat.getPercentInstance().format(test); 
  System.out.println(myString);
  
  //setMaximumFractionDigits(int) 设置数值的小数部分允许的最大位数。 
  //setMaximumIntegerDigits(int)  设置数值的整数部分允许的最大位数。 
  //setMinimumFractionDigits(int) 设置数值的小数部分允许的最小位数。 
  //setMinimumIntegerDigits(int)  设置数值的整数部分允许的最小位数.
  NumberFormat format = NumberFormat.getInstance();
  format.setMinimumFractionDigits( 3 );
  format.setMaximumFractionDigits(5);
  format.setMaximumIntegerDigits( 10 );
  format.setMinimumIntegerDigits(0);
  System.out.println(format.format(2132323213.23266666666));
 }

}



结果为:
23,323.332
¥23,323.33
23,323.332
34%
2,132,323,213.23267
分享到:
评论

相关推荐

    BigDecimal类

    BigDecimal 类详解 BigDecimal 类是 Java 中的一种数值类型,主要用于处理...它提供了多种构造器和方法,用于创建和操作 BigDecimal 对象,并且可以与 NumberFormat 类结合使用,用于格式化超过 16 位有效数字的数值。

    Java中BigDecimal类的使用详解

    在使用BigDecimal类时,我们可以使用相应的方法来进行加法减法乘法除法运算: //加法 BigDecimal b1 = new BigDecimal(Double.toString(num)); BigDecimal b2 = new BigDecimal(Double.toString(num)); System.err....

    Java保留两位小数方法大全

    #### 方法一:使用`BigDecimal` **原理**:通过`BigDecimal`类提供的方法,能够精确地控制数值的精度。在本案例中,使用`setScale`方法来设置小数点后保留的位数,并指定舍入规则。 **示例代码**: ```java double...

    java代码-BigDecimal转String

    首先,`BigDecimal`到`String`的最直接转换方式是使用`toString()`方法。这个方法会以标准的十进制格式返回`BigDecimal`对象的字符串表示。例如: ```java BigDecimal bd = new BigDecimal("123.456"); String str ...

    Java NumberFormat格式化float类型的bug

    Java NumberFormat格式化float类型的bug Java NumberFormat格式化float类型的bug是Java编程中一个常见的错误。...解决这个问题的方法是使用BigDecimal类,而不是使用float或double类型的数字,并将参数传递为字符串。

    JAVA格式输出,JAVA格式输出

    操作`BigInteger`和`BigDecimal`对象时,不能使用传统的运算符,而是要调用它们提供的方法,比如`add()`, `subtract()`, `multiply()`, 和 `divide()`。例如,执行`a * (b - 1) / c + 1`的计算,你需要写成: ```...

    java使double保留两位小数的多方法共2页.pdf

    2. **使用`String.format()`方法**: `String.format()`方法可以接受格式化字符串,其中 `%f` 后面的两位`0`表示保留两位小数。 ```java double num = 3.14159; String formattedNum = String.format("%.2f", ...

    java(小数点,百分号处理)

    `NumberFormat`提供了一个静态方法`getPercentInstance()`来获取一个百分比格式化器。 ```java NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2); System.out.println(nf....

    Java中保留两位小数的四种方法实现实例

    这四种方法包括使用DecimalFormat类、String类的format方法、BigDecimal类以及NumberFormat类。 首先,我们来了解DecimalFormat类。DecimalFormat类是Java中的一个格式化类,专门用于格式化十进制数字。通过使用...

    java运算java运算.doc

    为了解决这个问题,我们可以使用以下四种方法来保留浮点数的精度: 方式一:使用 BigDecimal ```java double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_...

    js数据格式转化

    此外,如果你需要将字符串转换为整数,可以使用`BigDecimal`的`setScale()`方法结合`ROUND_DOWN`舍入模式,或者直接使用JavaScript自身的`parseInt()`或`parseFloat()`方法。 对于字符串自身拼接的方法,比如使用`...

    Java中限制小数位数问题

    #### 方式一:使用`BigDecimal`进行四舍五入 `BigDecimal`类提供了精确的浮点数运算能力,非常适合用于需要高精度的场景。通过调用`setScale`方法可以方便地设置小数位数,并指定四舍五入的方式。 ```java double ...

    数字格式化类与大数处理利用案例轻松学习Java语言PPT学习教案.pptx

    但是,`NumberFormat`类的`getInstance()`方法返回的是本地化的格式化对象,对于需要更灵活的格式化方式,我们可以使用其子类`DecimalFormat`。 `DecimalFormat`类是`NumberFormat`的具体实现,它允许我们自定义...

    Java小数精度、时间格式和类型转换.doc

    数据转换可以使用多种方法,例如,使用 NumberFormat 类、使用 DecimalFormat 类、使用 SimpleDateFormat 类等。例如,NumberFormat nf = NumberFormat.getInstance(); String str = nf.format(123.456);。 Java 中...

    Java中Double除保留后小数位的几种方法(小结)

    2. 使用BigDecimal类:通过创建一个BigDecimal对象,然后使用setScale()方法对其进行保留小数位的操作。 double d = 114.145; BigDecimal b = new BigDecimal(d); d = b.setScale(2, BigDecimal.ROUND_HALF_UP)....

    java版简易计算器

    此外,计算器还可能使用了`NumberFormat`或`BigDecimal`类来确保精确的数值计算,尤其是在处理浮点数时。`NumberFormat`可以帮助格式化数字输出,而`BigDecimal`可以进行高精度的数学运算,避免浮点数计算中的精度...

    java保留小数的四种实现方法

    本文将详细介绍四种在Java中保留小数的方法,分别是使用`BigDecimal`、`DecimalFormat`、`String.format()`以及`NumberFormat`类。 1. **使用BigDecimal进行四舍五入** `BigDecimal` 类提供了一个精确的浮点数运算...

    java使double保留两位小数的多方法 java保留两位小数

    ### 方法一:使用BigDecimal进行四舍五入 `BigDecimal` 类提供了精确的浮点数运算,并且支持自定义舍入模式。以下是一个例子: ```java double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b...

    javascript 日期数字文本格式化

    这篇博客可能探讨了如何使用JavaScript原生方法或第三方库来实现这一功能。让我们深入了解一下JavaScript中的日期和数字格式化。 首先,JavaScript提供了一些内置的日期对象方法,如`Date`对象的`toString()`、`...

Global site tag (gtag.js) - Google Analytics