BigDecimal类
对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如表11-15所示。
表 BigDecimal类的常用方法
序号
|
方 法
|
类型
|
描 述
|
1
|
public BigDecimal(double val)
|
构造
|
将double表示形式转换
为BigDecimal
|
2
|
public BigDecimal(int val)
|
构造
|
将int表示形式转换为
BigDecimal
|
3
|
public BigDecimal(String val)
|
构造
|
将字符串表示
形式转换为BigDecimal
|
4
|
public BigDecimal add(BigDecimal augend)
|
普通
|
加法
|
5
|
public BigDecimal subtract(BigDecimal subtrahend)
|
普通
|
减法
|
6
|
public BigDecimal multiply(BigDecimal multiplicand)
|
普通
|
乘法
|
7
|
public BigDecimal divide(BigDecimal divisor)
|
普通
|
除法
|
范例:进行四舍五入的四则运算
-
package org.lxh.demo11.numberdemo;
-
import java.math.BigDecimal;
-
class MyMath {
- public static double add(double d1, double d2)
{
- BigDecimal b1 = new BigDecimal(d1);
- BigDecimal b2 = new BigDecimal(d2);
- return b1.add(b2).doubleValue();
- }
- public static double sub(double d1, double d2)
{
- BigDecimal b1 = new BigDecimal(d1);
- BigDecimal b2 = new BigDecimal(d2);
- return b1.subtract(b2).doubleValue();
- }
- public static double mul(double d1, double d2)
{
- BigDecimal b1 = new BigDecimal(d1);
- BigDecimal b2 = new BigDecimal(d2);
- return b1.multiply(b2).doubleValue();
- }
- public static double div(double d1,
double d2,int len) {
- BigDecimal b1 = new BigDecimal(d1);
- BigDecimal b2 = new BigDecimal(d2);
- return b1.divide(b2,len,BigDecimal.
ROUND_HALF_UP).doubleValue();
- }
- public static double round(double d,
int len) {
- 操作
- BigDecimal b1 = new BigDecimal(d);
- BigDecimal b2 = new BigDecimal(1);
-
-
- return b1.divide(b2, len,BigDecimal.
ROUND_HALF_UP).doubleValue();
- }
- }
-
public class BigDecimalDemo01 {
- public static void main(String[] args) {
- System.out.println("加法运算:" +
MyMath.round(MyMath.add(10.345,
-
3.333), 1));
- System.out.println("乘法运算:" +
MyMath.round(MyMath.mul(10.345,
-
3.333), 3));
- System.out.println("除法运算:" +
MyMath.div(10.345, 3.333, 3));
- System.out.println("减法运算:" +
MyMath.round(MyMath.sub(10.345,
-
3.333), 3));
- }
- }
分享到:
相关推荐
此外,为了处理大数运算,程序利用了Java提供的`BigDecimal`类,以提供高精度的浮点数运算。 首先,让我们深入了解算符优先分析法。这是一种解析技术,用于解决计算机语言中的表达式求值问题。在这个计算器中,算符...
alert(new BigDecimal("10").add(new BigDecimal("3E+10"))); //- alert(new BigDecimal("10").subtract(new BigDecimal("3E+10"))); //* alert(new BigDecimal("10").multiply(new BigDecimal("3E+10"))); // / ...
- **BigDecimal**:高精度的浮点数。 - **ThreadLocal**:线程局部变量。 - **ClassLoader**:类加载器。 - **URLClassLoader**:URL类加载器。 - **ArrayList**、**LinkedList**:列表的两种实现。 - **HashMap**、...
js中操作Bigdecimal类,包含所有java中bigdecimal的操作,加减乘除,四舍五入,比较等。
- **浮点运算误差**:Java中的浮点运算存在精度误差,精确计算应使用BigDecimal类。 5. **字符集**: - **字符类型(char)**:采用Unicode字符集,支持各种语言的字符。 6. **Java编程技能**: - **阅读编程...
- **BigInteger**和**BigDecimal**: 处理大整数和高精度浮点数。 #### 13. 日期与时间处理 - **Date类**: 用于表示特定的瞬间,即从1970年1月1日00:00:00 GMT以来的毫秒数。 - **SimpleDateFormat类**: 格式化和...
- **precision**:指定精度,对于`decimal`类型,默认为0。 - **scale**:指定小数位数,默认为0。 - **示例**: ```java @Entity public class Employee { @Column(name = "emp_name", length = 50, nullable...
- **BigInteger**和**BigDecimal**:处理大整数和高精度浮点数。 3. **Java集合框架**: - **Collection**:所有集合的顶级接口,包括List、Set和Queue。 - **List**:有序的、允许重复元素的集合,如ArrayList...
- **BigDecimal变量函数**:对高精度数值类型提供了支持。 - **记录计数器和UNH计数器**:这些计数器帮助跟踪记录的数量,便于统计和错误检测。 - **外部变量和计数器**:用于与其他外部程序交互,扩展了EDI Mapping...
- **类型检查**:由于JavaScript的动态类型特性,确保在进行`BigDecimal`操作前,所有涉及的数值都被转换为`BigDecimal`对象。 - **性能考虑**:虽然`BigDecimal`提供了精确计算,但它的运算速度相比JavaScript原生...
- **类型转换**: Java 支持自动类型转换,例如从较小的数据类型向较大的数据类型转换。 - **初始化**: 变量初始化时,默认情况下不会自动初始化为任何特定值,除非特别指定。 #### 13. 类型转换 - **强制类型转换**...
如果需要更精确的计算,例如金融计算,则应使用`BigDecimal`类,因为浮点数值存在舍入误差。 #### 其他类型 - **`char`**: 占用2个字节,用于存储Unicode字符。由于Unicode扩展性问题,使用`char`类型时需谨慎。 - ...
- **数值计算**:注意浮点数运算的精度问题,必要时使用`BigDecimal`。 - **finalize()**:不推荐使用,垃圾回收机制会自动调用。 - **对象集合**:选择合适的数据结构,如`List`、`Set`、`Map`等,根据需求选择。 -...
BigDecimal是一种可以处理任意精度的十进制浮点数的数据类型,它通常用于金融或会计等需要高精度计算的领域,因为在这些场景中,浮点数的精度丢失可能导致错误的结果。 在计算机科学中,浮点数(如`float`和`double...
- **BigDecimal**:Clojure支持`BigDecimal`类型,并提供了精度控制的方法。 - `with-precision`: 设置BigDecimal的操作精度。 #### 十、无检查运算 - **Unchecked**:Clojure提供了无检查运算的支持。 - `*...
- `BigInteger` 和 `BigDecimal` 类用于处理大整数和高精度的浮点数。 - **异常处理**: - **异常分类**:运行时异常(无需显式处理)和检查性异常(必须处理)。 - **异常处理**:通过 `try-catch-finally` 结构...
- **BigDecimal**:处理高精度的浮点数运算。 - **NumberFormat**:格式化数字输出。 - **String/StringBuffer/StringBuilder**:字符串操作。 - `String`:不可变字符串。 - `StringBuffer`/`StringBuilder`:可...
- **java.math**:提供了高精度的数值计算,如BigInteger和BigDecimal类。 - **java.net**:支持网络编程,包括URL处理、Socket编程等。 - **java.nio**:提供了新的I/O操作方式,如基于通道和缓冲区的非阻塞I/O。 ...
- **BigDecimal的扩展**:说明BigDecimal类的扩展方法。 - **Enumerable的扩展**:解释Enumerable模块的扩展方法。 - **Array的扩展**:列举Array类被扩展后的新方法。 - **Hash的扩展**:展示Hash类的扩展方法。 - ...
- **BigInteger和BigDecimal**:用于处理非常大的整数或小数。 - **System**:提供了一些有用的静态方法,如获取系统属性、执行系统命令等。 - **Runtime**:用于访问当前运行时系统。 - **Math**:提供了基本数学...