java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:

第一种:BigDecimal(double val)
Translates a double into a BigDecimal.

第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.

使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。

public static double add(double v1,double v2)
public static double sub(double v1,double v2)
public static double mul(double v1,double v2)
public static double div(double v1,double v2)
public static double div(double v1,double v2,int scale)
public static double round(double v,int scale)

import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
public class Arith{ //默认除法运算精度
private static final int DEF_DIV_SCALE = 10; //这个类不能实例化
private Arith(){}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double add(double v1,double v2){   BigDecimal b1 = new BigDecimal(Double.toString(v1));   BigDecimal b2 = new BigDecimal(Double.toString(v2));   return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1,double v2){   BigDecimal b1 = new BigDecimal(Double.toString(v1));   BigDecimal b2 = new BigDecimal(Double.toString(v2));   return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1,double v2){   BigDecimal b1 = new BigDecimal(Double.toString(v1));   BigDecimal b2 = new BigDecimal(Double.toString(v2));   return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){   return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){   if(scale<0){   throw new IllegalArgumentException(   "The scale must be a positive integer or zero");   }   BigDecimal b1 = new BigDecimal(Double.toString(v1));   BigDecimal b2 = new BigDecimal(Double.toString(v2));   return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){   if(scale<0){   throw new IllegalArgumentException("The scale must be a positive integer or zero");   }   BigDecimal b = new BigDecimal(Double.toString(v));   BigDecimal one = new BigDecimal("1");   return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};

  

BigDecimal加减乘除运算相关推荐

  1. java中Bigdecimal加减乘除运算

    在java中的Bigdecimal类型的数据进行加减乘除运算的时候要调用以下方法: 加法:add 减法:subtract 乘法:multiply 除法:divide 例如: BigDecimal i ...

  2. BigDecimal 加减乘除运算

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的 ...

  3. 详解BigDecimal及其加减乘除运算

    目录 一.BigDecimal概述 二.构造函数详解 1.BigDecimal(int val) 2.BigDecimal(int val, MathContext mc) MathContext 3 ...

  4. BigDecimal加减乘除次方运算及比较大小

    BigDecimal需要进行初始化,这里我对比两种初始化值的结果 BigDecimal big1 = new BigDecimal(0.05);BigDecimal big2 = new BigDec ...

  5. java float 加法_JAVA 实现精确的加减乘除运算

    JAVA在加减乘除运算时易发生精度丢失,达不到我们想要的计算结果:为了能够精确表示.计算浮点数,JAVA提供了BigDecimal类,可以以BigDecimal为基础定义一个Arith工具类,代码如下 ...

  6. bigdicmal除法精度设置_Java BigDecimal浮点数运算--如何保证运算精度不溢出

    加减乘除四则运算是高级程序设计语言(不论机器语言.汇编还是其他高级语言)最基础的部分,Java作为最流行的软件开发语言之一,涉及四则运算的程序代码和功能业务随处可见.在笔者从事的基于Java语言银行. ...

  7. JAVA 实现精确的加减乘除运算

    从上面代码的运行结果看出:JAVA在加减乘除运算时易发生精度丢失,达不到我们想要的计算结果:为了能够精确表示.计算浮点数,JAVA提供了BigDecimal类,可以以BigDecimal为基础定义一个 ...

  8. BigDecimal精确运算

    1.为什么要使用BigDecimal类? 因为普通的加减乘除运算会存在精度缺失的问题,而使用BigDecimal这个类可以很好的解决这个问题,所以才会使用. 2.API: 计算实例: 普通的加减乘除运 ...

  9. BigDecimal加减乘除及setScale的用法小结

    Bigdecimal初始化: BigDecimal num = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失. BigDecimal num = new Big ...

最新文章

  1. 听说你用JavaScript写代码?本文是你的机器学习指南
  2. [Java] Web开发环境搭建 - MyEclipse 篇
  3. 手机被偷后如何让小偷不能用
  4. python跳转和创建目录,Python - 创建目录,切换目录,创建文件,复制文件,移动文件 ,删除文件夹及文件...
  5. 机器人学一些概念1——自由度冗余,映射和操作算子
  6. python datasets 下载_Python机器学习·微教程
  7. ajax无法发送json串,如何使用$ .ajax发送JSON而不是查询字符串?
  8. java中斗地主发牌程序代码_java模拟实现斗地主发牌小程序
  9. Reader 与 Guava MultiReader
  10. Windows10一键优化工具 v4.0.25
  11. 计算机怎么改鼠标标志,电脑鼠标指针怎么改 修改电脑鼠标指针方法【图文】...
  12. 手动更新google服务框架
  13. msfvenom制作简易后门程序
  14. AI将带我们去何方?(下-展望篇)
  15. 树莓派连接不上WIFi,VNC失效,SSH失效
  16. Oracle 数据压缩(Compression) 技术 说明
  17. 群晖synology LDAP server 同步
  18. 【算法】最直接的算法——穷举法详解
  19. 一个北京24岁女孩的征男友要求!
  20. 冷原子量子计算机,量子计算新突破:在71个格点超冷原子量子模拟器中求解施温格方程...

热门文章

  1. 关于源码输出,浏览器不解析Html标签
  2. RMI原理揭秘之远程方法调用
  3. 敏捷游戏:从硬币游戏学习Scrum敏捷方法
  4. JS基础_流程控制语句
  5. 转: 用 Eclipse 平台进行 C/C++ 开发
  6. 工作中Docker使用命令笔记
  7. Java和OC的区别
  8. 四则运算之Right-BICEP测试
  9. 利用UDP19端口实施DOS攻击的真实案例
  10. 正确获取硬盘序列号源码