本文介绍Java的BigDecimal类的应用。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。
-
- //完整程序例子在本书配套资源目录Ch5中名为BigDecimalTestApp.java
- //创建BigDecimal对象
- BigDecimal bigNumber = new BigDecimal("89.1234567890123456789");
- BigDecimal bigRate = new BigDecimal(1000);
- BigDecimal bigResult = new BigDecimal(); //对象bigResult的值为0.0
- //对bigNumber的值乘以1000,结果 赋予bigResult
- bigResult = bigNumber.multiply(bigRate);
- System.out.println(bigResult.toString());
- //或者System.out.println(bigResult);
- //显示结果:89123.4567890123456789000
- //以双精度数返回bigNumber中的值
- double dData = bigNumber.doubleValue();
- System.out.println(dData); //结果:89.12345678901235
- //完整程序例子在本书配套资源目录Ch5中名为BigDecimalFormatApp.java
- BigDecimal bigLoanAmount = new BigDecimal(loanAmountString);
- //创建BigDecimal对象
- BigDecimal bigInterestRate = new BigDecimal(interestRateString);
- BigDecimal bigInterest = bigLoanAmount.multiply(bigInterestRate);
- //BigDecimal运算
- NumberFormat currency = NumberFormat.getCurrencyInstance();
- //建立货币格式化引用
- NumberFormat percent = NumberFormat.getPercentInstance();
- //建立百分比格式化引用
- percent.setMaximumFractionDigits(3); //百分比小数点最多3位
- //利用BigDecimal对象作为参数在format()中调用货币和百分比格式化
- System.out.println("Loan amount:\t" + currency.format(bigLoanAmount));
- System.out.println("Interest rate:\t" + percent.format(bigInterestRate));
- System.out.println("Interest:\t" + currency.format(bigInterest));
BigDecimal类
双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。表5.7中列出了BigDecimal类的主要构造器和方法。
表5.7 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对象中的值以整数返回。
注意,由于一般数值类型,例如double,不能准确地代表16位有效数以上的数字,在使用BigDecimal时,应用BigDecimal(String)构造器创建对象才有意义。另外,BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。
构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。关于构造器概念和编写技术,将在本书第6章详细介绍。
下面讨论BigDecimal类的一些常用例子:
注意使用方法doubleValue()将对象bigNumber中的值以双精度数值返回时,将丢失数据的准确性。使用其他方法,如xxxValue()时均存在这个问题,使用时必须慎重。
<!--[if !vml]--><!--[endif]-->3W BigDecimal用来对超过16有效位以上的数值进行运算和操作。所有的算术运算都通过调用其相应的方法进行。 创建一个超过16有效位数的对象时,运用BigDecimal(String)才可避免丢失数字的精确度。
BigDecimal和格式化
由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
以利用BigDecimal对货币和百分比格式化为例。首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比,即:
如下是这个程序运行会的一个典型输出结果:
Loan amount: ¥129,876,534,219,876,523.12
Interest rate: 8.765%
Interest: ¥11,384,239,549,149,661.69
相关推荐
这个源码资源是一个讲解数学计算处理...掌握Math类提供的各种数学计算方法,如三角函数、指数运算等。 学习Random类的使用,包括生成随机数和调整范围。 理解DecimalFormat类的功能,包括数字格式化、舍入规则设置等。
BigDecimal 类是 Java 中的一种数值类型,主要用于处理超过 16 位有效数字的数值运算。该类提供了多种构造器和方法,用于创建和操作 BigDecimal 对象。 构造器 BigDecimal 类提供了四种构造器,用于创建不同的 ...
Java中的`BigDecimal`类是用于表示和操作高精度浮点数的重要工具,尤其适用于需要进行精确计算的场景,如财务和货币计算。由于基本数据类型`double`和`float`在进行大数值或高精度计算时可能会导致精度丢失,因此`...
总的来说,理解和熟练运用BigDecimal是每个Java开发者必备的技能之一,特别是在处理货币计算、财务计算等场景时,能够避免因为浮点数精度问题导致的错误。在使用BigDecimal时,一定要注意其性能开销,因为它比基本的...
此外,BigDecimal类还支持舍入模式(RoundingMode),在进行除法运算时,如果需要四舍五入或者按照特定规则处理余数,可以通过setScale(int newScale, RoundingMode roundingMode)方法来实现。总之,Java中的...
Java编程BigDecimal用法实例分享 Java中的BigDecimal类是Java标准库中...Java中的BigDecimal类是一个强大的工具,可以帮助开发者精确地计算货币值等。在使用BigDecimal类时,需要注意构造方法的选择和数学运算的使用。
Java中的`BigDecimal`类是用来表示任意精度的十进制数,尤其适合于需要精确计算的商业和财务场景。它的核心概念包括非标度值(unscaled value)和标度(scale),非标度值是一个任意精度的整数,标度则是小数点后的...
在Java编程语言中,`BigDecimal`类是用于表示和操作大数(通常涉及财务或精确数学计算)的重要工具。由于浮点数(如`float`和`double`)在计算机中是以近似值存储的,这可能导致计算结果的不精确性,尤其是在进行...
本示例代码展示了如何使用`BigInteger`和`BigDecimal`类来执行大数据的四则运算,确保结果的准确性和精确性。 首先,让我们详细了解这两个类: 1. `BigInteger` 类:这是Java中的一个内置类,位于`java.math`包下...
在Java编程语言中,BigDecimal是一种用于处理高精度数值的数据类型,尤其适用于金融计算等领域,因为它可以提供不受限的小数位数精度以及精确的数学运算能力。然而,在某些情况下,我们可能需要将BigDecimal类型的值...
在Java编程语言中,当我们处理涉及货币、财务或者任何需要高精度计算的场景时,`BigDecimal` 类是非常重要的工具之一。本文将深入探讨 `BigDecimal` 类的基本概念、特点以及如何使用它来进行精确的算术运算。 #### ...
`BigDecimal` 类是 Java 中用于高精度浮点数计算的关键工具,主要解决 `float` 和 `double` 类型在处理货币、财务等需要精确计算场景时存在的精度问题。`BigDecimal` 的运算方式与基本数据类型有所不同,因为它涉及...
为了解决这个问题,开发者们引入了`BigDecimal`类库的概念,它在Java中被广泛使用,用于进行高精度的算术运算。本文将详细介绍JavaScript版的`BigDecimal`类库,以及如何在JavaScript环境中实现精确计算。 ...
为了解决这个问题,Java提供了`java.math.BigDecimal`类,它允许进行任意精度的十进制运算,确保了计算的准确性。BigDecimal类通过存储一个任意长度的非标度值和一个表示小数点位置的整数来实现精确的浮点数表示。 ...
BigDecimal是Java提供的一个大数类,它提供了对任意精度的十进制数进行算术运算的能力,避免了浮点数计算时可能出现的精度问题。例如,`new BigDecimal("10.5")`创建了一个表示10.5的BigDecimal对象。 2. 四舍五入...
为了解决这个问题,Java提供了`BigDecimal`类,用于进行精确的十进制算术运算。这篇博客将深入探讨`BigDecimal`的使用,以及如何通过它来实现精确计算。 `BigDecimal`是Java `java.math`包下的一个类,它提供了任意...
为了应对浮点数运算可能出现的精度问题,Java提供了`java.math`包,其中包含了一些用于精确数学计算的类,比如`BigDecimal`。本文将深入探讨Java中常用的数学类以及如何进行精确的浮点数运算,包括加减乘除、四舍五...
BigDecimal是一种可以表示任意精度的十进制浮点数的类,主要用于财务、货币和其他需要精确计算的场景。在Java中,有内置的`java.math.BigDecimal`类,但JavaScript原生并不支持这样的数据类型。因此,"js_bigdecimal...
BigDecimal是Java提供的一个大数类,它可以用来进行精确的浮点数运算,避免了传统浮点数运算中可能出现的精度损失问题。在金融或会计系统中,对数据的精度要求很高,BigDecimal就成为首选的数据类型。 在...
在当前的软件开发中,数学运算的...总之,ArithmeticUtils类通过封装BigDecimal类的运算细节,提供了一系列精确控制运算精度的方法,使Java在进行高精度计算时变得更为简单和直接,大大降低了开发的难度和出错的可能。