BigDecimal加减乘除运算工具类

BigDecimal加减乘除运算工具类BigDecimal加减乘除运算工具类

大家好,又见面了,我是你们的朋友全栈君。

import java.math.BigDecimal;   

/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */  
public class Arith{ 
    
	//默认除法运算精度 
	private static final int DEF_DIV_SCALE = 10; 
	
	/** * 提供精确的加法运算。 * @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();   
	}   
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【JavaScript】document对象_Cookie属性「建议收藏」

    【JavaScript】document对象_Cookie属性「建议收藏」Cookie是什么?借助document的cookie属性,Javascript程序就可以实现与www服务器一样的cookie功能,即获取当前的cookie信息和产生一个新的cookie。一个浏览器访问www服务器的每个网页文件,都是独立的,每个网页的javascript程序之间的信息也不能共享。即使是同一个网页的上一次访问和下一次访问之间也无法传递数据。同一张网页

    2022年7月27日
    6
  • eclipse使用–设置自动补全代码

    1、Java设置自动补全(1)设置自动补全依次点击Window–>Perferences(选项设置)–>Java–>Editor(编辑)–>ContentAssist(内容辅助/代码提示)然后在“ContentAssist”页面中,可以看到下面有一个AutoActivation中有一个Autoactivationtrigge…

    2022年4月4日
    783
  • 亚交联盟怎么样?我的真实经历

    亚交联盟怎么样?我的真实经历以前听过做亚交只要到了可以支付的金额,就会把你的级别降低,又原来的从$2/$1(女/男)降到$0.30/$0.15。现在自己做了,果然如此。今天收到亚交邮件:谢谢您对亚交的支持。至今您无法在每30位免

    2022年7月3日
    24
  • 09年后的经典电影_2010年好看的电影有哪些

    09年后的经典电影_2010年好看的电影有哪些哈哈,这是我个人觉的09年最好看的电影,如果大家有不同的声音,请补充……01、《新娘大战》(BrideWars)  影片导演:加里.文尼克  影片主演:安妮.海瑟薇、凯特.哈德森、布莱恩.格林伯格、斯蒂夫.哈维  发行公司:20世纪福克斯  北美首映:2009年1月9日  期待指数:★★★★★★★☆☆☆7星  作品简介:  两个从…

    2022年9月30日
    0
  • Java框架总结

    Java框架总结本系列用来记录常用java框架的基本概念、区别及联系,也记录了在使用过程中,遇到的一些问题的解决方法,方便自己查看,也方便大家查阅。欲速则不达,欲达则欲速!一、SSH1、基本概念SSH框架是JAVAEE中三种框架所集成,分别是Struts,Spring,Hibernate框架所组成,是当前比较流行的javaweb开源框架。集成SSH框架的系统从职责上分为(Struts2–…

    2022年7月9日
    15
  • Python基础(3)—八种数据类型

    Python基础(3)—八种数据类型Python的八种数据类型八种数据类型分别是:number(数字)、string(字符串)、Boolean(布尔值)、None(空值)list(列表)、tuple(元组)、dict(字典)、set(集合)。下面,我将这八种类型的相关知识,做一个梳理。 1.number(数字类型)2.string(字符串类型)3.Boolean(布尔值)与空值4.list…

    2022年6月10日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号